首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >*泛型* httpd.conf将非www重定向到www

问*泛型* httpd.conf将非www重定向到www
EN

Stack Overflow用户
提问于 2013-09-27 23:39:01
回答 1查看 1.5K关注 0票数 1

是否可能有一个泛型/多域 httpd.conf行将任何非www请求重定向到其www等效项?

泛型,我指的是不依赖硬编码域名,即。

代码语言:javascript
复制
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^yourdomain.com [NC]
RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [L,R=301]

我真的不想每次在服务器上添加/删除另一个网站时编辑httpd.conf,尤其是我的服务器。该网站被动态添加/删除!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-28 00:29:12

重写文档拥有您所需的所有信息,但是有很多可阅读的内容。您想要的内容有两部分:首先,您需要匹配任何不以www.开头的域;然后,您需要在当前URL中添加www.前缀。

对于第一部分,有以下内容(同时适用于RewriteCond和RewriteRule):

可以在模式字符串前加上'!‘。字符(感叹号)用于指定不匹配的模式.

所以“主机名不会开始。”可以像这样进行测试:

代码语言:javascript
复制
RewriteCond %{HTTP_HOST} !^www\. [NC]

第二部分是这样的:

除了纯文本之外,Substition字符串还可以包括.服务器-在规则条件测试中的变量-字符串(%{VARNAME})

因此,实际的重定向可以变成通用的,如下所示:

代码语言:javascript
复制
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [L,R=301]

顺便说一句,也有可能做相反的事情(将一切都重定向到没有www.),因为RewriteRule替换也可以使用以下方法:

对最后匹配的RewriteCond模式的反向引用(%N)

因此,您可以在www.之后捕获主机名中的所有内容,并将其用作规则的目标:

代码语言:javascript
复制
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19061650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档