Movable Type to Wordpress迁移:htaccess重定向问题

时间:2011-12-18 19:43:28

标签: regex wordpress .htaccess redirect movabletype

我正在将一个相当大的(5000多个帖子)从Movable Type迁移到WordPress。在这一点上,我一直试图确保一旦我们使用新网站,旧的帖子网址就不会产生404.

旧网址模式如下:

http://domain.com/site/category/category/post_name.php

我想将它们重定向到

http://domain.com/category/category/post_name/

但是,我尝试过使用htaccess重定向,无论我做什么,它都会失败或产生500错误。我怀疑我错过了一些愚蠢的事情,或者说可能存在相互矛盾的规则,我希望能比我更了解htaccess的人可以帮助我走上正确的道路。

这就是我现在所拥有的。重定向/ site /到根目录的规则工作得很好,但是其他两个没有效果,无论是单独还是一起。我试过看看我是否可以重定向特定的帖子并以这种方式手动执行,但它仍然无效。

RewriteEngine On

RewriteRule ^site/(.*) /$1 [NC]
RewriteRule ^site/resources/(.*).php$ /resources/$1 [NC]
RewriteRule ^site/resources/research/safe_urban_form_revisiting_the_relationship_b.php$ /resources/research/safe_urban_form_revisiting_the_relationship_b/ [NC]

# 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

任何帮助都非常有用!

3 个答案:

答案 0 :(得分:1)

看起来你可能想要使用像这样的重定向:

# Redirect /site/any/path/file.php to /any/path/file/:
RewriteRule ^site/(.+)\.php$ $1/ [NC,R=301,L]

另外,我会在Wordpress部分的RewriteBase /行之后立即将其作为第一条规则。

答案 1 :(得分:1)

由于您保留相同的域名,为什么不忘记自己编写重定向规则并使用重定向插件?在插件的帮助下,您可以更轻松地定义重定向规则。这是我每次都能遵循的策略

答案 2 :(得分:0)

您的重定向未按预期工作的原因是.是正则表达式语法中的特殊字符 - 它表示“任何字符”。您需要使用反斜杠转义任何特殊字符,例如.^等,\.

# BEGIN WordPress
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    # Redirect old URLs with ".php" in them.
    RewriteRule ^site/(.+)\.php$ $1/ [NC,R=301,L]

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

# END WordPress

我不确定你是否真的想要RewriteRule ^site/(.*) /$1 [NC]规则,或者它只是测试。如果您这样做,只需在RewriteBase /语句后添加。