.htaccess+;wordpress,多目录重定向

.htaccess+;wordpress,多目录重定向,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我正在将大约38个网站从Joomla转移到wordpress 我想保持相同的链接结构,因为搜索引擎优化。不幸的是,上一个开发人员对他们构建链接的方式很粗心,所以我需要满足一些古怪的要求 i、 e有时他们的博客是index.php/blog-4,同时也是index.php/blog和index.php/blog-5 在wordpress中,我将永久链接 index.php/blog-5/%postname% 我以前从未编辑过.htaccess,但我想做的是重定向到的任何内容 /blog/*-->/

我正在将大约38个网站从Joomla转移到wordpress

我想保持相同的链接结构,因为搜索引擎优化。不幸的是,上一个开发人员对他们构建链接的方式很粗心,所以我需要满足一些古怪的要求

i、 e有时他们的博客是index.php/blog-4,同时也是index.php/blog和index.php/blog-5

在wordpress中,我将永久链接

index.php/blog-5/%postname%

我以前从未编辑过.htaccess,但我想做的是重定向到的任何内容

/blog/*-->/blog-5/*

/blog-4/*-->/blog-5/*

我会写些什么来完成这个任务

编辑

我很难实现迈克尔的答案。下面是我的.htaccess的外观。我试着把它放在里面和外面

# 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]


RewriteCond %{REQUEST_URI} !^/blog-5
RewriteRule ^blog(-.+)?/(.*) blog-5/$2 [L,R=301]

</IfModule>

# END WordPress
#开始WordPress
重新启动发动机
重写基/
重写规则^index\.php$-[L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L]
重写cond%{REQUEST_URI}^/博客-5
重写规则^blog(-.+)?/(*)blog-5/$2[L,R=301]
#结束WordPress

这是一个相当简单的
重写规则。使用表达式
(-4)?
可以选择匹配
-4
,并将其重定向到
/blog-5
,同时请求
/blog/
/
后面的第二个
(.*)
组将所有其他内容捕获到
$2

RewriteEngine On
RewriteRule ^blog(-4)?/(.*) blog-5/$2 [L]
上面的代码将进行无声的内部重写。如果确实要重定向并让浏览器显示新的URL,请将
[L]
更改为
[L,R=301]

注意:
blog-4
可能是一个变量名,请使用
(.+)?
匹配任何内容。但是您还需要一个
RewriteCond
,这样它就不匹配
blog-5

RewriteCond %{REQUEST_URI} !^/blog-5
RewriteRule ^blog(-.+)?/(.*) blog-5/$2 [L]

嗨,迈克尔,谢谢你的快速回答。这是有道理的。我尝试将此添加到中,但没有看到重定向发生。这可能是因为我在.htaccess文件中编写它的方式。我已经用htaccess文件更新了这个问题。思绪万千appreciated@StepanParunashvili对不起,我错过了你的评论,不知道为什么我没有看到通知。它看起来像是重写规则/php
可能是首先匹配的。注释掉该行以测试新规则。也许你需要将其作为最后一条规则添加回去。@StepanParunashvili我看到你再次将其标记为已接受,因此我希望这对你有效。我还没有尝试过,但你的解释很有道理:)。谢谢你,迈克尔。