【发布时间】:2012-10-18 15:00:09
【问题描述】:
我想重写以下 URL 字符串:
product.php?category=abstract_and_patterns&page=1
收件人:
抽象和模式
现在需要注意的是,类别和页面变量总是会有所不同,具体取决于用户所在的页面或他们选择的类别。
我花了几个小时试图解决这个问题,但没有成功。
[编辑]
我尝试了很多东西,但我尝试过的最新重写工作但出现 404 错误。
RewriteCond %{QUERY_STRING} ^category=([^&]+)&page=([^&]+)$
RewriteRule ^product.php$ /%1/%2? [L,R=301]
[编辑]
你们知道,实际上只有 1 个页面,即 products.php 页面。该页面上的信息是根据查询字符串中的值从数据库中提取的。现在显然为了用户友好性和 SEO 目的,我需要干净的 URL 而不是 category=abstrsct_and_patterns&page=3 但我还需要记住查询字符串,尤其是对于页面,以便网站仍然可以运行。这甚至可能吗?谢谢。
【问题讨论】:
-
或许您可以向我们展示您的尝试?
-
我是否正确地认为,如果我让上述重写工作,那么必须有一个页面位于它被重写到的任何类别名称处?
-
我认为你在考虑它。您想匹配 abstract-and-patterns 并将其转换为 ?category=abstract-and-patterns
-
感谢您的评论,但我正在倒退。由于数据库的结构方式,我不得不根据查询字符串中的值动态生成内容,这意味着不存在实际的单独页面,只有 product.php。然后根据查询字符串中的值从数据库中提取内容。因此,当用户请求 URL product.php?category=absract_and_patterns&page=3 我需要将该 URL 重写为 /abstract_and_patterns/page-3 或类似的东西。这就是为什么我需要知道它是否可能。
-
另外值得注意的是,我仍然需要查询字符串值才能在我的 PHP 代码中使用,否则它将无法工作。
标签: mod-rewrite url-rewriting rewrite friendly-url pretty-urls