我是一个相当熟练的程序员,但是当涉及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 ,以便相当容易地解析和重定向这些链接。