如何将PHP查询string转换为基于斜杠的URL?

我是一个相当熟练的程序员,但是当涉及RegEx和重写时,我总共是n00b。 我想从一个URL转换

http://www.example.com/lookup.php?id=1 

 http://www.example.com/lookup/1/item/ 

其中“item”是指正在查找的数据库中的项目名称。

我正在使用LAMP(Linux,Apache,MySQL,PHP),而且我不能在我的生活中弄清楚如何转换这些URL,以便它们对search引擎友好。

简单的.htaccess示例:

 <Ifmodulee mod_rewrite.c> RewriteEngine On RewriteRule ^lookup/([a-z0-9\-]+)/item/?$ /lookup.php?id=$1 </Ifmodulee> 

这将匹配任何长度的任何字母数字(也将承认破折号)字符串作为'id'。 您可以通过将正则表达式更改为([0-9]+)来将其限制为数字。

 <Ifmodulee mod_rewrite.c> RewriteEngine On RewriteRule ^lookup/([a-z0-9\-]+)/([a-z0-9\-]+)/?$ /lookup.php?id=$1&view=$2 </Ifmodulee> 

这个将会匹配/lookup/123/some-text/ to /lookup.php?id=123&view=some-text

看看htaccess重写网址! 🙂

这是你的例子:

 RewriteRule ^lookup/(\d+)/(.*)$ /lookup.php?id=$1&name=$2 

当您访问lookup/123/my-product/ ,它会在lookup.php?id=123&name=my-product调用lookup.php?id=123&name=my-product文件。

你想从旧的URL重定向到新的? 或者你正在阅读这些“友好”的网址,然后让它们像旧网址一样?

如果是后者,请尝试看一下Net_URL_Mapper ,以便相当容易地解析和重定向这些链接。