我的.htaccess中有这样的规则:
RewriteRule ^art_(.*).htm$ art_item.php?id=$1
并像这样链接:art_1.html => art_item.php?id=1
现在我想添加一个类似于art_1/5.html => art_item.php?id=1&id2=5
RewriteRule ^art_(.*)/(.*).htm$ art_item.php?id=$1&id=$2
我试过了,但服务器抛出404错误。怎么了?
答案 0 :(得分:2)
首先,您需要注意规则的顺序。
错误的订单:
RewriteRule ^art_(.*)\.html$ art_item.php?id=$1
RewriteRule ^art_(.*)/(.*)\.html$ art_item.php?id=$1&id2=$2
正确的顺序:
RewriteRule ^art_(.*)/(.*)\.html$ art_item.php?id=$1&id2=$2
RewriteRule ^art_(.*)\.html$ art_item.php?id=$1
这是因为(.*)
也匹配(.*)/(.*)
,因为/
匹配.
的任何字符。
第二:.htm
和.html
之间存在差异,因此要么小心,要么只使用与{2}匹配的\.html?
。
答案 1 :(得分:1)
以下内容应涵盖假设id
为数字(最好尽可能准确):
RewriteRule ^art_(\d+)\.htm$ art_item.php?id=$1
RewriteRule ^art_(\d+)/(\d+)\.htm$ art_item.php?id=$1&id2=$2
注意: id2
进行第二次捕获