我在 Wordpress 中更改分页 URL 时遇到问题。我知道对此的通用解决方案是更改 Wordpress 核心文件,但我只需要一个类别的解决方案。也许只有一个类别可以通过 htaccess 来完成?
现在有这样的 URL:http: //mysite.com/categoryname/ page /3
我想把它改成这样: http: //mysite.com/categoryname/3
感谢您的任何回复
我在 Wordpress 中更改分页 URL 时遇到问题。我知道对此的通用解决方案是更改 Wordpress 核心文件,但我只需要一个类别的解决方案。也许只有一个类别可以通过 htaccess 来完成?
现在有这样的 URL:http: //mysite.com/categoryname/ page /3
我想把它改成这样: http: //mysite.com/categoryname/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 规则之前。
基本上,你应该使用这个 htaccess 规则:
RewriteRule ^categoryname/page/([0-9]+)$ /categoryname/$1 [L,R=301]
RewriteRule ^categoryname/([0-9]+)$ /categoryname/page/$1 [L]
categoryname/page/3
为categoryname/3
.categoryname/3
to的不可见重定向categoryname/page/3
。然后你可以在你的代码中使用两者categoryname/page/3
,categoryname/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]