我正在使用亚马逊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>
谢谢湿婆
2条答案
按热度按时间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”
suzh9iv82#
默认情况下,如果没有匹配的其他主机,则使用第一个vhost。
因此,您需要找出与第二台主机不匹配的原因。
您是否正在使用www.site2.com?,这将无法匹配第二个vhost(仅为没有www的site2.com设置)。我也不明白为什么在ServerName和ServerAlias中设置相同的值?通常在第一个中设置首选ServerName,在第二个中设置任何别名(包括www版本)。
所以改为:
您通常会:
您还可以使用以下命令获取当前配置的vhost的列表:
除此之外,我所能建议的是查找错别字,确保Apache正确重启(但这似乎是可以的,因为你可以让它工作时,把3-〉4重定向在第一个示例),确保主机被正确传递到Apache(例如,如果Apache是在一个代理后面)和页面存在于site 2根据布兰登的建议和检查日志文件的错误。