【问题标题】:Rewrite query into path using htaccess使用 htaccess 将查询重写为路径
【发布时间】:2018-10-20 12:02:13
【问题描述】:

我怎样才能让htaccess重写下面的URL结构:

http://example.com/detail.php?id=polo&categ=wears

http://example.com/wears/polo/

我已经尝试了下面的代码,但它对我不起作用。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.+)/(admin|css|fonts|ico|include|js|images|img|products|slide)/(.*)$ $2/$3 [L]
RewriteRule ^(.*)/(.*)/$ detail.php?id=$1&categ=$2
</IfModule>

【问题讨论】:

  • "重写以下 URL 结构" - 请注意,您的代码正试图完全相反(这很好)。将 URL 重写为 /wears/polo/ 是没有意义的(这可能会导致 404)。

标签: php mysql .htaccess


【解决方案1】:

当我在 URL 中包含斜杠时,您的代码对我有效。

工作 -> http://example.com/wears/polo/

不工作 -> http://example.com/wears/polo

另外,您需要从 .* 表达式中排除斜线字符。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.+)/(admin|css|fonts|ico|include|js|images|img|products|slide)/(.*)$ $2/$3 [L]
RewriteRule ^([^/]*)/([^/]*)/?$ detail.php?id=$1&categ=$2
</IfModule>

【讨论】:

  • “你的代码对我有用”——除了值是相反的。您需要切换反向引用$1$2 的顺序。
【解决方案2】:

试试这个

RewriteEngine on
RewriteRule ^/(\w+)/(\w+)$ detail.php?categ=$1&id=$2 [NC,L]

【讨论】:

  • 在每个目录上下文(.htaccess 文件)中,您需要从RewriteRule pattern 中删除斜杠前缀。 (您还缺少示例中 URL 末尾的斜杠。)
猜你喜欢
  • 2012-10-11
  • 2021-12-10
  • 1970-01-01
  • 2015-01-08
  • 1970-01-01
  • 1970-01-01
  • 2020-11-03
  • 2013-04-28
  • 2016-11-17
相关资源
最近更新 更多