.htaccess 重写错误

.htaccess 重写错误

我有我的网站结构http://example.com/category_name/product_name。我使用以下 RewriteRule 将其重写为 PHP:

RewriteRule ^(.*)/(.*)/$ detail-produktu.php?kategorie=$1&nazev=$2

但是当我尝试重写地址时出现问题http://example.com/user/david。此 URL 始终以 开头/user,因此我想像这样重写它:

RewriteRule ^user/(.*)/$      index.php?user=$1

但带有 的 URL 仍然/user指向detail-produktu.php

我能做些什么?

答案1

您面临一些潜在的问题。

  1. 您所述的 URL ( http://example.com/user/david) 没有以斜线结尾,但RewriteRule 图案包含尾部斜杠,因此不匹配。

  2. 您将需要包含L标志来停止重写过程(至少是当前轮的处理.htaccess),否则该请求也可能会被其他规则捕获。

  3. 顺序很重要。最具体的规则需要放在第一位。因此,捕获/user请求的规则必须放在第一位。

例如:

RewriteRule ^user/([^/]+)$ index.php?user=$1 [L]
RewriteRule ^([^/]+)/(.*)$ detail-produktu.php?kategorie=$1&nazev=$2 [L]

我已将图案。如果需要尾部斜杠,请将其添加回来。我还对模式进行了更严格的限制,以便它匹配整个路径段,而不是任何事物

相关内容