我正在将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
答案 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]