我的数据库中有一个名为product-url的字段。
可能看起来像这样:
Company-Name/Product-Name-Here
我有一个重写规则,可以从该字段中删除好网址。
<a href="/products/$product-url">productname</a>
RewriteRule ^products/(.*)/$ /products/index.php?product-url=$1 [L]
然后我这样做:
if (isset($_GET['product-url'])) {
look up + display that items information
}
但是当我点击我的链接时,我找不到&#39;页面。
我的product-url字段中的斜线是否欺骗/使RewriteRule中断?如果是这样,有办法吗?
感谢您的帮助......
答案 0 :(得分:1)
在你的hrefs上添加一个尾部斜杠并保留原始的RewriteRule。
<a href="/products/$product-url/">productname</a>
RewriteRule ^products/(.*)/$ /products/index.php?product-url=$1 [L]
如果您将RewriteRule更改为仅^products/(.*)$
,它将与/products/index.php
本身匹配,因此会创建一个循环,因此会出现500错误。
另一种不改变hrefs的方法:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^products/(.*)$ /products/index.php?product-url=$1 [L]