是否可能有一个泛型/多域 httpd.conf行将任何非www请求重定向到其www等效项?
泛型,我指的是不依赖硬编码域名,即。
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^yourdomain.com [NC]
RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [L,R=301]我真的不想每次在服务器上添加/删除另一个网站时编辑httpd.conf,尤其是我的服务器。该网站被动态添加/删除!
发布于 2013-09-28 00:29:12
重写文档拥有您所需的所有信息,但是有很多可阅读的内容。您想要的内容有两部分:首先,您需要匹配任何不以www.开头的域;然后,您需要在当前URL中添加www.前缀。
对于第一部分,有以下内容(同时适用于RewriteCond和RewriteRule):
可以在模式字符串前加上'!‘。字符(感叹号)用于指定不匹配的模式.
所以“主机名不会开始。”可以像这样进行测试:
RewriteCond %{HTTP_HOST} !^www\. [NC]第二部分是这样的:
除了纯文本之外,Substition字符串还可以包括.服务器-在规则条件测试中的变量-字符串(%{VARNAME})
因此,实际的重定向可以变成通用的,如下所示:
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [L,R=301]顺便说一句,也有可能做相反的事情(将一切都重定向到没有www.),因为RewriteRule替换也可以使用以下方法:
对最后匹配的RewriteCond模式的反向引用(%N)
因此,您可以在www.之后捕获主机名中的所有内容,并将其用作规则的目标:
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]https://stackoverflow.com/questions/19061650
复制相似问题