将$ _GET重写为多层目录:blah / blahblah

时间:2014-08-09 00:43:47

标签: apache .htaccess mod-rewrite

我的数据库中有一个名为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中断?如果是这样,有办法吗?

感谢您的帮助......

1 个答案:

答案 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]