我正在尝试将网站从一个域上的一组静态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}}删除扩展名,这是我的最后一个资源。
任何帮助表示赞赏!
答案 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/