使用Apache重写URL以重定向根域

时间:2012-04-04 18:33:34

标签: apache mod-rewrite url-rewriting

我有这种情况,我希望使用以下方案重定向我的域。如果可以使用Apache中的RewriteRule实现这一点,请指点一下吗?

我想重定向使用http://www.domainname.com/url进行的任何调用,以重定向到http://domainname.com/url

我能够使用以下重写规则

来实现上述目标
# BEGIN WithoutWWW
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.domainname\.com$ [NC]
RewriteRule ^(.*)$ http://domainname.com/$1 [R=301,L]
# END WithoutWWW

如果有人试图仅访问http://www.domainname.comhttp://domainname.com,我希望他们重定向到http://dname.com

如何在Apache中使用RewriteRule实现此规则? 我也使用PHP,因此使用PHP的解决方案也是有效的。

3 个答案:

答案 0 :(得分:2)

以下是您使用现有代码和新代码组合的.htaccess:

RewriteEngine on

# redirect domainname.com/ or www.domainname.com/ to dname.com/
RewriteCond %{HTTP_HOST} ^(www\.)?domainname\.com$ [NC]
RewriteRule ^$ http://dname.com [R=301,L]

# append www to domainname.com    
RewriteCond %{HTTP_HOST} ^www\.domainname\.com$ [NC]
RewriteRule ^ http://domainname.com%{REQUEST_URI} [R=301,L]

答案 1 :(得分:1)

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://domainname.com/$1 [R=301,L]

答案 2 :(得分:0)

该示例看起来像mod_rewrite。 使用mod_rewrite,您可以:

# BEGIN WithoutWWW
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?domainname\.com$ [NC]
RewriteRule ^(.*)$ http://dname.com/$1 [R=301,L]
# END WithoutWWW

您可能需要查看http://www.workingwith.me.uk/articles/scripting/mod_rewrite

根据您的评论,您希望以不同方式重定向根,以便我们可以这样做:

RewriteEngine on
#www.domainname.com & domainname.com -> dname.com
RewriteCond %{HTTP_HOST} ^(www\.)?domainname\.com$ [NC]
RewriteRule ^$ http://dname.com/ [R=301,L]

#www.domainname.com/[url] -> domainname.com/[url]
RewriteCond %{HTTP_HOST} ^www\.domainname\.com$ [NC]
RewriteRule ^(.*)$ http://domainname.com/$1 [R=301,L]