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

时间:2010-11-29 06:51:15

标签: php apache mod-rewrite

我是一个非常熟练的程序员,但是当谈到RegEx并重写时,我总计n00b。我想从

转换网址
http://www.example.com/lookup.php?id=1

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

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

我正在使用LAMP(Linux,Apache,MySQL,PHP),在我的生活中,我不能弄清楚如何转换URL以使它们对SEO友好。

3 个答案:

答案 0 :(得分:4)

简单.htaccess示例:

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

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

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

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

答案 1 :(得分:2)

看看htaccess重写网址! :)

以下是您的示例:

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

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

答案 2 :(得分:0)

您想要从旧网址重定向到新网址吗?或者您是否希望阅读这些“友好”的网址,然后让它们像旧网址一样?

如果是后者,请尝试查看Net_URL_Mapper,以便轻松地解析和重定向这些链接。