如何将带有产品编号的URL字符串转换为产品名称

时间:2013-01-24 14:16:29

标签: php html .htaccess url

好的......对于你们这些人/女孩来说,这可能是一个简单的问题,我知道可以做到这一点我只是不知道如何实现它。我认为这是用.htaccess完成的,但我不太确定。

我有一个使用PHP的站点,它的URL字符串为:

 mydomain.com/product/item.php?=0210

如何将该项目编号转换为实际产品,例如:

 mydomain.com/product/brown-green-socks

这可能吗?如果是这样,你能指出我正确的方向。我试图搜索网站,但无法确切地找到进程被调用的内容,所以我真的找不到我问题的正确答案。

3 个答案:

答案 0 :(得分:3)

您建议的网址方案需要唯一的产品名称。

大多数大型商店使用domain.com/product/0210-brown-green-socks等方案。这样,使用mod_rewrite将内部重定向到该网址的请求内容重定向到/item.php?=0210就更容易了。

答案 1 :(得分:1)

mydomain.com/product/item.php?=0210 - > 301-> mydomain.com/product/brown-green-socks

mydomain.com/product/brown-green-socks表示mydomain.com/product/item.php?=0210 它们是两个不同的东西,你需要2个规则:

RewriteEngine On

RewriteCond%{QUERY_STRING}正则表达式条件 RewriteRule ^ blog / read /(.*)$ blog / index.php?b = $ 1 [L,QSA]

第一个将301(永久移动)重定向到漂亮的URL。第二个将允许您的应用程序理解漂亮的URL。

每当您更改网站的网址方案时,您都应该处理现有链接。因此,第一条规则是必需的/一个好主意。但是,在使用自己的应用程序时,不应该使用第一条规则。如果您自己的应用程序生成了profile.php的链接?user = me - 更改您的应用程序代码。

答案 2 :(得分:0)

这个问题有两个部分,一个是如何通过'slug'而不是id识别每个元素,另一个是如何删除问号。

要删除问号,请尝试在.htaccess文件中使用apache重写。 (Google apache重写)例如,我使用

RewriteRule ^blog/read/(.*)$ blog/index.php?b=$1 [L,QSA]

所以任何去博客/阅读/ 13的人都会被重定向到blog / index.php?b = 13

下一步是在数据库中查找产品时开始使用'slug'而不是'id'。我可以详细介绍但我不知道您的数据库或网站是如何工作的,所以无法帮助!感谢