这个htaccess出了什么问题?

时间:2016-09-23 17:33:18

标签: wordpress .htaccess redirect

我正在尝试将网站从一个域上的一组静态html页面移动到WordPress上的新域。所以我希望每个旧页面都重定向到新域的相应新页面。

旧域上的结构如下:

http://www.example.com/page.html

并且新域具有以下结构:

http://www.example-new.com/category/sub-category/page/

所以我尝试了这个:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^http://www.domain-old\.com/page1.html [NC]
RewriteRule ^(.*)$ http://www.domain-new.com/new-category/new-sub-category/page1/ [R=301,L]

RewriteCond %{HTTP_HOST} !^http://www.domain-old\.com/page2.html [NC]
RewriteRule ^(.*)$ http://www.domain-new.com/new-category/new-sub-category/page2/ [R=301,L]

RewriteCond %{HTTP_HOST} !^http://www.domain-old\.com/page3.html [NC]
RewriteRule ^(.*)$ http://www.domain-new.com/new-category/new-sub-category/page3/ [R=301,L]

RewriteCond %{HTTP_HOST} !^http://www.domain-old\.com/page4.html [NC]
RewriteRule ^(.*)$ http://www.domain-new.com/new-category/new-sub-category/page4/ [R=301,L]

RewriteCond %{HTTP_HOST} !^http://www.domain-old\.com/page5.html [NC]
RewriteRule ^(.*)$ http://www.domain-new.com/new-category/new-sub-category/page5/ [R=301,L]

它有效(有点)。唯一的GIANT问题是现在所有页面都重定向到第一个新页面,在这种情况下http://www.domain-new.com/new-category/new-sub-category/page1/

显然我不是专家,但是我花了几个小时在Google上寻找答案并尝试一些事情并且无法知道如何做到这一点,我发现最接近的是将domain A重定向到{{ 1}}删除扩展名,这是我的最后一个资源。

任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:2)

这个条件是主要问题:

RewriteCond %{HTTP_HOST} !^http://www.domain-old\.com/page1.html [NC]

这将始终评估为true ,因为变量HTTP_HOST仅匹配网络请求的主机名部分而非完整网址。

您可以在.htaccess中使用此单一规则:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{HTTP_HOST} ^(?:www\.)?domain-old\.com$ [NC]
RewriteRule ^([\w-]+)\.html$ http://www.domain-new.com/new-category/new-sub-category/$1/ [R=301,L,NC]

答案 1 :(得分:1)

你过于复杂了。而不是所有处理,只需使用重定向指令。

Redirect 301 /page1.html /new-category/new-sub-category/page1/
Redirect 301 /page2.html /new-category/new-sub-category/page2/
Redirect 301 /page3.html /new-category/new-sub-category/page3/
Redirect 301 /page4.html /new-category/new-sub-category/page4/