使apache自动删除www。
时间:2020-03-05 19:00:10 来源:igfitidea点击:
由于各种原因(例如Cookie,SEO),并且为了简化起见,我想让apache自动将对http://www.foobar.com/anything的任何请求重定向到http://foobar.com/anything。我能想到的最好的方法是基于mod_rewrite的怪兽,是否有一些简单易行的方法告诉它"将对域ABC的所有请求重定向到XYZ"?
PS:我发现了一个与此相关的问题,但这是针对IIS的,与我想要的相反。而且它仍然很复杂。
解决方案
回答
RewriteEngine On RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC] RewriteRule ^(.*)$ http://domain.com/ [R=301,L]
这应该够了吧。
回答
如果我们使用mod_rewrite的话,这非常简单,就像我们所有人都做的那样;)
这是我的实时网站中的.htaccess的一部分:
RewriteEngine on # Catches www.infinite-labs.net and redirects to the # same page on infinite-labs.net to normalize things. RewriteCond %{HTTP_HOST} ^www\.infinite-labs\.net$ RewriteRule ^(.*)$ http://infinite-labs.net/ [R=301,L]
回答
就像这样简单:
<VirtualHost 10.0.0.1:80> ServerName www.example.com Redirect permanent / http://example.com/ </VirtualHost>
根据需要调整主机名和IP :)
回答
由于我们提到使用mod_rewrite,因此建议我们在.htaccess中使用一条简单规则对我来说似乎并不可怕:)
RewriteCond %{HTTP_HOST} ^www\.foobar\.com$ [NC] RewriteRule ^(.*)$ http://foobar.com/ [L,R=301]
回答
使用带有某些mod_rewrite规则的.htaccess文件:
RewriteEngine On RewriteRule ^www.SERVERNAME(.*) http://SERVERNAME [L,QSA]
我不确定那里的$ 1
语法是否正确,但是有据可查。 L向浏览器发送一个location:标头,而QSA表示查询字符串追加。
回答
从一个站点到另一个站点的复制更加简单和容易:
RewriteCond %{HTTP_HOST} ^www\.(.+)$ RewriteRule ^(.*)$ http://%1/ [R=301,L]