4

出于各种原因,例如 cookie、SEO 以及为了简单起见,我想让 apache 自动将任何对http://www.foobar.com/anything的请求重定向到http://foobar.com/anything。我能想到的最好的方法是基于 mod_rewrite 的怪物,有没有一些简单的方法可以告诉它“将域 ABC 的所有请求重定向到 XYZ”?

PS:我发现这个有点相关的问题,但它是针对 IIS 的,并且与我想要的相反。而且它仍然很复杂。

4

6 回答 6

9

这很简单:

<VirtualHost 10.0.0.1:80>
        ServerName www.example.com
        Redirect permanent / http://example.com/
</VirtualHost>

根据需要调整主机名和 IP :)

于 2008-09-17T21:49:59.583 回答
7

更简单,更容易地从站点复制到站点:

RewriteCond %{HTTP_HOST} ^www\.(.+)$
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
于 2009-03-30T16:00:53.173 回答
4

如果你像我们一样使用 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/$1 [R=301,L]
于 2008-09-17T21:49:49.147 回答
1

使用带有一些 mod_rewrite 规则的 .htaccess 文件:

RewriteEngine On
RewriteRule ^www.SERVERNAME(.*) http://SERVERNAME$1 [L,QSA]

我不确定那里的语法是否正确$1,但有据可查。l 向浏览器发送一个location: header,QSA表示Query String Append。

于 2008-09-17T21:52:23.743 回答
0

既然您提到使用 mod_rewrite,我建议在您的 .htaccess 中使用一个简单的规则 - 对我来说似乎并不可怕:)

RewriteCond %{HTTP_HOST} ^www\.foobar\.com$ [NC]
RewriteRule ^(.*)$ http://foobar.com/$1 [L,R=301]
于 2008-09-17T21:50:06.400 回答
-1
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]

这应该够了吧。

于 2008-09-17T21:49:01.770 回答