Mod 重写可选参数

问题描述 投票:0回答:2

我有一套相当复杂的重写规则,可以为我的网站页面提供漂亮的 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 脚本,并且仅在指定页面时才传递页面参数。我知道这是一个非常基本的问题,但我似乎无法在任何地方找到答案。

mod-rewrite pagination
2个回答
1
投票

你可以这样做:

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]

0
投票

可以使用rewritemap和一个小的外部脚本,该脚本将非空映射到

?page=$1
并将空映射到空。我建议坚持你所拥有的。

© www.soinside.com 2019 - 2024. All rights reserved.