htaccess mod_rewrite - 初学者问题

时间:2011-03-16 19:46:40

标签: php .htaccess mod-rewrite

假设我有一个像index.php这样的文件需要处理这样的网址:

index.php?cat=1&sub=2&id=3

现在我希望有更好的网址,如下所示:

index.php/cars/bmw/x3

我的问题是,如果'cars'这个词是与'cat / category'id为1相关联的数据库中的名字,当我去index.php / cars时,url如何访问数据库,找到“汽车”,抓住它的相应ID为“1”,并将其映射到网址?

这个网站是Php / MySQL

2 个答案:

答案 0 :(得分:1)

您需要使用RewriteMap指令

This page有一个类似于您需要的示例。

答案 1 :(得分:1)

在您的网络服务器的DocumentRoot内的.htaccess文件中放置以下代码:

RewriteEngine On
RewriteRule ^index.php/cars/(.+)$ /index.php?carName=$1 [QSA,L,NC]

这将使用查询参数carName在URL中的/ cars /之后调用index.php。

然后在你的index.php里写一个MySQL查询来查询数据库,比如:select * from cars_table where name = $ _ REQUEST [“carName”];并且您将能够检索匹配的汽车记录。

然而,正如上面提到的警告SQL受到SQL注入攻击一样,所以最好使用准备好的sql语句或Mysqli exetnsion of php来查询数据库而不是直接放置http请求值。