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

时间:2012-12-15 14:17:36

标签: .htaccess mod-rewrite

我正在将Joomla的38个网站移动到wordpress。

我希望保持相同的链接结构,因为SEO。不幸的是,最后一位开发人员对他们构建链接的方式粗心大意,所以我有一些古怪的要求来实现。

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

在wordpress中,我将永久链接作为

的index.php /博客-5 /%postname%

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

/ blog / * - > /博客-5 / *

/ blog-4 / * - > /博客-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

1 个答案:

答案 0 :(得分:2)

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

RewriteEngine On
RewriteRule ^blog(-4)?/(.*) blog-5/$2 [L]

以上将进行无声的内部重写。如果您确实想要重定向并让浏览器显示新网址,请将[L]更改为[L,R=301]

注意:实现blog-4可能是变量名称,使用(-.+)?来匹配任何内容。但您还需要RewriteCond,因此 blog-5不匹配:

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