我一直在为(例子)在线商店制定一个htaccess重定向指令。
产品显示在product.php上,传入了ID参数。
我的目标是拥有
products/someValue/someID
映射到
product.php?param1=someValue¶m2=someID
这是我到目前为止的地方。这大部分都有效,但有些事情并不是我想要的。我需要它基本上通过正斜杠将products/
之后的所有内容分开,并将每个作为参数使用,无论多少或几个。另外,尾部斜杠是可选的 - 如果不包括,我的规则会抛出404。谁能指出我正确的方向?
RewriteRule ^products/(.*)/(.*)/.*$ /product.php?param1=$1¶m2=$2
答案 0 :(得分:1)
你目前的正则表达式是贪婪的。量词默认是贪婪的。添加?
会使它们不合适。或者您可以更改正则表达式以匹配除/
之外的任何内容。其中任何一个都应该有效:
RewriteRule ^products/(.*?)/(.*?)(/.*)?$ /product.php?param1=$1¶m2=$2
RewriteRule ^products/([^/]*)/([^/]*)(/.*)?$ /product.php?param1=$1¶m2=$2
答案 1 :(得分:1)
尝试将正则表达式更改为非贪婪:
RewriteRule ^products/(.*?)/(.*?)/.*$ /product.php?param1=$1¶m2=$2
或:
RewriteRule ^products/([^/]+)/([^/]+)/.*$ /product.php?param1=$1¶m2=$2