2012-10-27 53 views
2

我试图做一个旧的域(不管它是否有www前缀)重定向到一个新的域没有www。例如:htaccess重写(旧域到新域都WWW和非WWW)

olddomain.com> newdomain.com

www.olddomain.com> newdomain.com

我已经得到了它,以便从非www重定向在工作,但如果WWW被使用,域不重定向。

这是在一个WordPress的网站,所以我包括了Wordpress使用的位。

RewriteEngine On 
RewriteBase/

# ### Begin custom domain redirect ### 
RewriteCond %{HTTP_HOST} ^www\.olddomain.com\.com$ [NC] 
RewriteRule ^.*$ http://newdomain.com%{REQUEST_URI} [R=301,L] 
RewriteCond %{HTTP_HOST} ^olddomain\.com$ [NC] 
RewriteRule ^.*$ http://newdomain.com%{REQUEST_URI} [R=301,L] 
# ### End custom domain redirect, back to the standard WP stuff ### 

RewriteRule ^/index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
+0

我知道这是旧的,但我想指出的是您的www OLDDOMAIN是行不通的,如果你有.COM两次:'^ WWW \ .olddomain.com \ .com' – Slam

回答

3

尝试:

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

,它将处理有和没有WWW传入的URL。

并将RewriteBase /移动到WP块的上方;它可能会导致问题出在错误的地方。

RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
+1

如果你把'WWW .''可选''''''''如'RewriteCond%{HTTP_HOST} ^(www \。)?olddomain.com [NC]'您可以使用一个'RewriteRule'作为www和仅使用'%1'的域名参考 - '重写规则^(。*)$ http://%1newdomain.com/$1 [R = 301,L]' – doublesharp

+0

除了它看起来像两个应该去没有www的新域,所以你只需要添加'''使'www.''可选。 – doublesharp

+0

感谢你们俩! – Kerri