从分页网址中删除“页面”

时间:2012-08-21 07:59:16

标签: regex wordpress .htaccess url-rewriting wordpress-plugin

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

现在有这样的网址: http://mysite.com/categoryname/ / 3

我希望将其更改为: http://mysite.com/categoryname/3

感谢您的回复

2 个答案:

答案 0 :(得分: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规则之前。

答案 1 :(得分:2)

基本上,你应该使用这个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/3categoryname/page/3的不可见重定向。

然后,您可以在代码中同时使用categoryname/page/3categoryname/3,这将始终在网址中显示简短版本。

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

修改

无限循环......我怎能错过它!

避免此循环的方法是找到category/page/3的“最终网址”(例如: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]