使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]