以下是我的.htaccess代码
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)$ /products/product-full-view.php?src=$1&id=$2
RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)/?$ /products/product-full-view.php?src=$1&id=$2
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)$ /buy/buy-full-view.php?src=$1&id=$2
RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)/?$ /buy/buy-full-view.php?src=$1&id=$2
第一条规则工作正常,但没有采取第二条规则......无法理解这里发生的事情......
原始网址就像这样 www.example.com/products/product-full-view.php?src=somevalue&id=somevalue
和第二个 www.example.com/buy/buy-full-view.php?src=somevalue&id=somevalue
请帮助我运行第二条规则。
提前致谢
答案 0 :(得分:1)
您尝试匹配相同的模式,提供或采用可选的尾部斜杠,四次。当您达到最后两条规则时,您的网址已经被重写为其他内容。
你可能想要看起来更像的东西:
RewriteEngine On
RewriteRule ^products/([0-9]+)/?$ /products/product-full-view.php?id=$1 [L]
RewriteRule ^buy/([0-9]+)/?$ /buy/buy-full-view.php?id=$1 [L]
或者:
RewriteEngine On
RewriteRule ^products/([a-zA-Z0-9_-]+)/([0-9]+)/?$ /products/product-full-view.php?src=$1&id=$2 [L]
RewriteRule ^buy/([a-zA-Z0-9_-]+)/([0-9]+)/?$ /buy/buy-full-view.php?src=$1&id=$2 [L]
无论如何还是该命令。
每次注意存根和[L]
:products/
和buy/
避免相同的网址引用两个不同的位置,[L]
(表示“最后一个” “)告诉重写引擎在匹配时停止处理规则。
答案 1 :(得分:0)
如果网址与第二条规则匹配,则它也与第一条规则匹配。应用第一个规则后,生成的URL不再与第二个规则匹配。这就是为什么永远不会应用第二条规则。