我有一套相当复杂的重写规则,可以为我的网站页面提供漂亮的 URL。现在为了处理搜索结果分页,我正在使用 2 个重写规则:
RewriteRule ^search/([0-9]+)$ /cgi-bin/search.pl?page=$1 [NC,L,QSA]
RewriteRule ^search$ /cgi-bin/search.pl [NC,L,QSA]
这些句柄 URL 例如:
http://example.com/search
http://example.com/search/2
http://example.com/search/1000
我想知道如何将这些组合成 1 个重写规则,以便正确调用 search.pl 脚本,并且仅在指定页面时才传递页面参数。我知道这是一个非常基本的问题,但我似乎无法在任何地方找到答案。
你可以这样做:
RewriteCond page=$2 ^page=.+|
RewriteRule ^search(/([0-9]+))?$ /cgi-bin/search.pl?%0 [NC,L,QSA]
但这并不是更好,不是吗?
编辑 或者如果您可以接受空的 page 值:
RewriteRule ^search(/([0-9]+))?$ /cgi-bin/search.pl?page=$2 [NC,L,QSA]
您可以使用rewritemap和一个小的外部脚本,该脚本将非空映射到
?page=$1
并将空映射到空。我建议坚持你所拥有的。