4

我在 Wordpress 中更改分页 URL 时遇到问题。我知道对此的通用解决方案是更改 Wordpress 核心文件,但我只需要一个类别的解决方案。也许只有一个类别可以通过 htaccess 来完成?

现在有这样的 URL:http: //mysite.com/categoryname/ page /3

我想把它改成这样: http: //mysite.com/categoryname/3

感谢您的任何回复

4

2 回答 2

3

您需要匹配%{THE_REQUEST}以确保您匹配的是实际请求,而不是内部重写的 URI:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /categoryname/page/([0-9]+)
RewriteRule ^ /categoryname/%1 [L,R=301]

RewriteRule ^/categoryname/([0-9]+)$ /categoryname/page/$1 [L]

这些必须在 wordpress 规则之前。

于 2012-08-21T09:35:32.220 回答
2

基本上,你应该使用这个 htaccess 规则:

RewriteRule ^categoryname/page/([0-9]+)$ /categoryname/$1 [L,R=301]
RewriteRule ^categoryname/([0-9]+)$ /categoryname/page/$1 [L]
  • 第一条规则将您的旧网址更改categoryname/page/3categoryname/3.
  • 第二条规则是从categoryname/3to的不可见重定向categoryname/page/3

然后你可以在你的代码中使用两者categoryname/page/3categoryname/3这将始终在 url 中显示简短版本。

请注意,其他类似网址可能存在一些问题(确保您永远不会在categoryname/3其他地方使用)

编辑

无限循环……我怎么能错过!

避免此循环的方法是找到category/page/3(例如:)的“最终 url” index.php?category_name=categoryname&page=3,并在您的第二条规则中使用它:

RewriteRule ^categoryname/page/([0-9]+)$ /categoryname/$1 [L,R=301]
RewriteRule ^categoryname/([0-9]+)$ /index.php?category_name=categoryname&page=$1 [L]
于 2012-08-21T08:13:04.097 回答