可移动字体到WordPress迁移:htaccess重定向问题



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

旧的 url 模式如下所示:

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

任何帮助都将非常有用!

看起来您可能想要使用如下所示的重定向:

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

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

既然您将保留相同的域,为什么不忘记自己编写重定向规则并使用重定向插件呢?借助插件定义重定向规则会容易得多。这是我每次可能遵循的策略

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

# 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 /语句之后即可。

最新更新