带有多个参数的apache mod_rewrite正则表达式问题

时间:2010-03-15 16:37:19

标签: regex mod-rewrite parameters

正则表达一直是我的烦恼。每次我觉得我终于明白了,我有一个新问题!

我想抓住这样的网址:

http://www.mydomain.com/boutique/blabla-1/bla-bla2/99/104
http://www.mydomain.com/boutique/blabla1/99

并最终:

http://www.mydomain.com/boutique/blabla-1/bla-bla2/product1/99/104/55/
经过大量尝试和错误之后,我想出了这个似乎适用于http://www.gskinner.com/RegExr/但不适用于apache

^.*/boutique/([a-zA-Z-]*)(/?[a-zA-Z-]*)/?([0-9]*)/?([0-9]*)/?$   boutique.php?c1=$3&c2=$4

(到目前为止,我只使用前两个网址)

我的apache重写日志调试文件很无奈:

  

通过/Users/iko/Sites/mysite/boutique.php

我只对获得ids感兴趣。我们欢迎任何帮助!

谢谢。

2 个答案:

答案 0 :(得分:0)

RewriteRule ^boutique/(?:[a-zA-Z][\w-]*/){1,3}/(\d+)(?:/(\d+)(?:/(\d+))?)?/?$ boutique.php?c1=$1&c2=$2&c3=$3

答案 1 :(得分:0)

我个人喜欢为每种类型编写一条规则,因为我发现它更清晰(特别是如果htaccess是你的bug)

### Rewrite rule for /boutique/blabla-1/bla-bla2/99/104
RewriteRule ^boutique/([a-z0-9-]+)/([a-z0-9-]+)/([0-9]+)/([0-9]+) boutique.php?c1=$3&c2=$4

解释不同的位 ([a-z0-9 - ] +)基本上都是小写字母,数字和连字符。 类似地([0-9] +)仅用于数字和连字符

希望这有帮助