301将www和非www重定向到新域但相同的文件

时间:2016-01-28 17:24:29

标签: apache .htaccess redirect mod-rewrite

我在这里找到了很多主题,但我找不到如何将非www和www域永久重定向到新的非www域?

    # BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress# 
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.org$ [NC]
RewriteRule ^ http://newdomain.eu%{REQUEST_URI} [L,R=301]

这种接缝工作我想知道这里有太多的代码还是这样吗?谢谢

1 个答案:

答案 0 :(得分:0)

我可能会转过头来,将新规则置于# BEGIN WordPress之上 - 否则WP路由会在您重定向到新域之前开始工作;这意味着文件系统查找是否存在与请求匹配的文件夹或文件。

您对新域的重写仍然有效,因为您在那里使用了REQUEST_URI;除了系统正在使用的内部当前URI之外,该值在重写期间保持不变 - 如果您使用RewriteRule ^(.*)$ http://newdomain.eu/$1 [L,R=301,QSA]代替,因为WP路由高于您使用(.*)捕获的内容可能只是{{} 1}}现在 但是一旦用户到达新域,WP路由将再次启动,并再次检查文件系统

但是,如果您首先重写到新域,则不会达到WP路由规则的要点,因此不需要在旧域“下”进行测试。

除此之外,你的规则似乎很好;这就像你可以实现这个东西的代码一样少。性能也应该没有问题(一旦你解决订单问题,正如我解释的那样。)