0

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

由于 SEO,我想保持相同的链接结构。不幸的是,最后一位开发人员对他们构建链接的方式粗心,所以我有一些古怪的要求要满足。

即有时他们的博客是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
4

1 回答 1

2

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

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

以上将进行静默内部重写。如果您确实想要重定向并让浏览器显示新 URL,请更改[L][L,R=301].

注意:realizingblog-4可能是一个变量名,(-.+)?用来匹配任何东西。但是您还需要 aRewriteCond所以它不匹配 blog-5

RewriteCond %{REQUEST_URI} !^/blog-5
RewriteRule ^blog(-.+)?/(.*) blog-5/$2 [L]
于 2012-12-15T14:22:17.833 回答