htaccess - 将重写组合成单一的

时间:2015-09-30 02:54:20

标签: regex apache .htaccess mod-rewrite

我有几个RewriteRules,我想合并为一个。不过,我不知道怎么做。我觉得需要使用环顾四周吗?两者之间的区别是第一个匹配如下:

search/foosearch/foo/

,第二个匹配

search/foo/10search/foo/10/

重新写入:

RewriteRule ^search/([a-zA-Z]+)/?$ index.php?page=search&query=$1&pn=1 [L]
RewriteRule ^search/([a-zA-Z]+)/([0-9]+)/?$ index.php?page=search&query=$1&pn=$2 [L]

不使用环顾四周,我的尝试就是

^search/([a-zA-Z]+)/?([0-9]+)?/?$

但是我觉得那会不会像这样不合适?

search/foo10

编辑:

我正在努力让正则表达式匹配以下URI:

  1. search/foo
  2. search/foo/
  3. search/foo/1
  4. search/foo/1/

1 个答案:

答案 0 :(得分:0)

^search/([a-zA-Z]+)(/)?([0-9]+)?\/?$ 
这会有效吗?你可能会把'/'作为匹配模式而忽略$ 2.可以跟随尾随'/'并忽略$ 4.