我想设置我的虚拟主机来执行以下操作。对于背景, 在我访问虚拟主机之前,我在.htaccess中的另一台服务器上执行了此操作 使用完全重写。你可以假设,这非常慢。
vhosts.conf
<VirtualHost *:80>
ServerName example.com
</VirtualHost>
<VirtualHost *:80>
ServerName a.example.com
</VirtualHost>
<VirtualHost *:80>
ServerName b.example.com
</VirtualHost>
<VirtualHost *:80>
ServerName www.example.com
Redirect permanent / http://example.com
</VirtualHost>
在这种情况下,由于某种原因b.example.com
匹配,但a.example.com
重定向
到example.com
。这看起来很奇怪。
rstlne.example.com
显示example.com的内容,但地址仍显示rstlne.example.com
。这是预期的,但我需要知道如何将此案例重定向到example.com
。关于重定向不存在的域的唯一想法是让第一个(默认)虚拟主机具有重定向,但在这种情况下example.com
将匹配并成为重定向循环。
答案 0 :(得分:2)
:e scp://<shortname>//etc/httpd/conf/vhosts/vh.conf
,虽然它说控制台返回1,但实际上并不更新需要sudoedit
权限的文件。完全愚蠢的错误。需要在ssh控制台中使用sudoedit
或类似内容来实际进行需要root的修改。如果其他人需要做类似的话,我会留下这些信息。
vhosts.conf
<VirtualHost *:80>
ServerName example.com
...
</VirtualHost>
<VirtualHost *:80>
ServerName a.example.com
...
</VirtualHost>
<VirtualHost *:80>
ServerName b.example.com
...
</VirtualHost>
<VirtualHost *:80>
ServerName www.example.com
ServerAlias *.example.com
Redirect permanent / http://example.com
</VirtualHost>
清除浏览器缓存解决了这个问题。它实际上按预期工作。
在执行重定向的最后一个VirtualHost中匹配CNAME或A记录通配符域。它必须是最后一个,因为VirtualHosts按顺序匹配。因此,任何尚未匹配(存在)的子域都将被通配符捕获,并且像www被重定向一样。
由于可能会在以后添加子域名,我仍然对永久性地进行通配符匹配有一些保留意见,但这对于SEO的影响可能很小或没有。