.htaccess 重写其中一个变量正在更改的URL

4dbbbstv  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(119)

我正在尝试在page=1可以有任何数值的地方重写工作。

RewriteCond %{QUERY_STRING} ^per_page\=10&page\=1&_embed&categories\=&categories_exclude\=31,32,92$
RewriteRule ^wp\-json/wp/v2/posts$ /wp-json/wp/v2/posts?per_page=10&page=1&_embed&categories_exclude=31,32,92 [L]

所以如果变量id为page=6,它就保持不变。
有什么建议吗?

btxsgosb

btxsgosb1#

捕获RewriteCond正则表达式(CondPattern)中page URL参数的值,并在替换字符串中使用相应的%<number>反向引用。例如:

RewriteCond %{QUERY_STRING} ^per_page=10&page=(\d+)&_embed&categories=&categories_exclude=31,32,92$
RewriteRule ^wp-json/wp/v2/posts$ /wp-json/wp/v2/posts?per_page=10&page=%1&_embed&categories_exclude=31,32,92 [L]

正则表达式\d是数字的速记字符类,等价于 long-hand[0-9]
%1反向引用包含由前面的 CondPattern 中的第一个捕获子组(\d+)捕获的字符串(即page URL参数的值)。

  • 旁白:* 不需要在正则表达式中反斜杠转义=-,因为它们在这里使用的上下文中没有特殊的含义。

参考编号:

但是,您也可以捕获“所有内容”并保存重复,从而“简化”* 替换字符串 *。例如:

RewriteCond %{QUERY_STRING} ^(per_page=10&page=\d+&_embed)&categories=(&categories_exclude=31,32,92)$
RewriteRule ^wp-json/wp/v2/posts$ /$0?%1%2 [L]

这里,我们捕获了&categories= URL参数前后的查询字符串部分(要删除的部分),它们分别保存在%1%2反向引用中。
$0反向引用包含与整个RewriteRule * 模式 * 匹配的URL路径。

相关问题