通过apache重写规则进行永久重定向

时间:2011-04-05 14:59:58

标签: apache mod-rewrite redirect

我正在尝试编写一条规则来永久地将域名重定向到另一个域名

RewriteCond %{HTTP_HOST} ^www.companyname1.com$
RewriteRule ^(.*)$ http://www.companyname2.com/$1 [R=301,L]

这仅在用户记得输入www时才有效,如果用户未在网址中输入www,则会加载页面,但图片链接将被破坏。

有没有人知道如何调整上述规则,使用和不使用www?

我正在使用LAMP配置,在redhat上使用apache 2.

4 个答案:

答案 0 :(得分:10)

您可以使用[OR]提供多个可选的重写条件:

RewriteCond %{HTTP_HOST} ^www.companyname1.com$ [OR]
RewriteCond %{HTTP_HOST} ^companyname1.com$
RewriteRule ^(.*)$ http://www.companyname2.com/$1 [R=301,L]

这应该可以解决问题。第一个重写条件触发,如果存在www,则第二个触发,如果www已被遗忘。

答案 1 :(得分:2)

重定向对我不起作用,我不得不调整它,下面是基于@Demento答案的工作版本。

# Parmenent redirect to webdesign.danols.com of all pages
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.kingston-web-design.com [OR]
RewriteCond %{HTTP_HOST} ^kingston-web-design.com
RewriteRule ^(.*)$ http://webdesign.danols.com.com$1 [R=301,L]

答案 2 :(得分:1)

如果您不关心主机名的起源,请不要使用正则表达式,只需检查它是否以companyname1.com结尾。

至于前导斜杠,只需将其作为可选项添加到正则表达式的根目录中。

RewriteCond %{HTTP_HOST} companyname1.com$
RewriteRule ^/?(.*) http://www.companyname2.com/$1 [R=permanent,L]

答案 3 :(得分:0)

或者仅通过使用简单的正则表达式即可:

RewriteCond %{HTTP_HOST} ^(www.)?companyname1\.com$
RewriteRule ^(.*)$ http://www.companyname2.com/$1 [R=301,L]