apache 2.4基于名称的虚拟主机无法工作

lymgl2op  于 2022-11-16  发布在  Apache
关注(0)|答案(2)|浏览(189)

我正在使用亚马逊Ec2和我已经合并了2个网站,需要为我的旧网站设置不同的重定向规则.但当我试图与下面的配置相同时,Web服务器总是采取第一个虚拟主机条目(site1.com),而不采取第二个虚拟主机条目(site2.com).你能检查我是否遗漏了什么.
请看下面我的配置。
httpd.配置文件:

Listen 0.0.0.0:80
Listen 0.0.0.0:443
Include conf/extra/httpd-vhosts-all.conf

请输入以下命令:

<VirtualHost *:80>
  ServerName site1.com
  ServerAlias site1.com 
  DocumentRoot "/websites/site1"  
  <Directory /websites/site1 > 
    Require all granted
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
  </Directory>    
  RewriteEngine On
  RewriteRule     ^/page1$  page2.html
</VirtualHost>
<VirtualHost *:80>
  ServerName site2.com 
  ServerAlias site2.com    
  DocumentRoot "/websites/site2" 
  <Directory /websites/site2 > 
    Require all granted
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
  </Directory> 
  RewriteEngine On
  RewriteRule     ^/page3$  page4.html
</VirtualHost>

谢谢湿婆

kg7wmglp

kg7wmglp1#

1.一定会尝试清除您的浏览器缓存作为covener提到...如果你还没有。
1.确保您可以成功命中预期的重写目标?
http://site2.com/page4.html
1.如果这两种方法都没有发现问题,您可以将%v和%{host}i添加到活动的LogFormat中,以确认传入的主机标头值以及Apache正在使用的ServerName。例如:
日志格式“%h %l %u %t %r %〉s %B主机=%{主机}i服务器名=%v

suzh9iv8

suzh9iv82#

默认情况下,如果没有匹配的其他主机,则使用第一个vhost。
因此,您需要找出与第二台主机不匹配的原因。
您是否正在使用www.site2.com?,这将无法匹配第二个vhost(仅为没有www的site2.com设置)。我也不明白为什么在ServerName和ServerAlias中设置相同的值?通常在第一个中设置首选ServerName,在第二个中设置任何别名(包括www版本)。
所以改为:

ServerName site1.com
ServerAlias site1.com

您通常会:

ServerName site1.com
ServerAlias www.site1.com

您还可以使用以下命令获取当前配置的vhost的列表:

apachectl -S

除此之外,我所能建议的是查找错别字,确保Apache正确重启(但这似乎是可以的,因为你可以让它工作时,把3-〉4重定向在第一个示例),确保主机被正确传递到Apache(例如,如果Apache是在一个代理后面)和页面存在于site 2根据布兰登的建议和检查日志文件的错误。

相关问题