2

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

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

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

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

 mydomain.com/product/brown-green-socks

这可能吗?如果是这样,您能否指出我正确的方向。我试图搜索该站点,但无法准确找到该过程的名称,因此,我真的找不到我的问题的正确答案。

4

3 回答 3

3

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

大多数较大的商店使用类似的方案domain.com/product/0210-brown-green-socks。这样,使用mod_rewrite简单地将请求重定向到该 URL 到/item.php?=0210.

于 2013-01-24T14:19:59.920 回答
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 个不同的东西,您需要 2 个规则:

重写引擎开启

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

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

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

于 2013-01-24T14:26:48.243 回答
0

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

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

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

所以任何去 blog/read/13 的人实际上都会被重定向到 blog/index.php?b=13

下一点是在数据库中查找产品时开始使用“slug”而不是“id”。我可以更详细地介绍,但我不知道您的数据库或网站是如何工作的,所以帮不上忙!谢谢

于 2013-01-24T14:24:22.313 回答