.htaccess RewriteRule 用于带分页的搜索页面

问题描述

我想为我的带有分页搜索结果页面一个重写规则,它必须满足以下条件:

显示网址​​ 1:

/search?q=SEARCH-QUERY

实际网址 1:

/search.PHP?q=SEARCH-QUERY

显示网址​​ 2:

/search?q=QUERY&p=N

实际网址 2:

/search.PHP?q=QUERY&p=N

其中 QUERY一个变量字符串(用户输入),N一个整数(页码)。

我有以下满足上述条件 1 的条件,但我无法修改它以满足条件 2。

RewriteCond %{THE_REQUEST} \s/(search)\?q=[^\s]*\s [NC]
RewriteRule ^ %1.PHP [L,QSA]

解决方法

对于您展示的样品,请您尝试以下一次。 在测试您的网址之前,请务必清除浏览器缓存。

RewriteEngine ON
RewriteCond %{THE_REQUEST} \s/(search)\?(?:q=[^\s]*)\s [NC]
RewriteRule ^ %1.php [L,QSA]
RewriteCond %{THE_REQUEST} \s/(search)\?(?:q=[^\s]*)&(?:p=[0-9]+)\s [NC]
RewriteRule ^ %1.php [L,QSA]