我正在将一个相当大的(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
任何帮助都非常有用!
答案 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 /
语句后添加。