我有我的网站结构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
您面临一些潜在的问题。
您所述的 URL (
http://example.com/user/david
) 没有以斜线结尾,但RewriteRule
图案包含尾部斜杠,因此不匹配。您将需要包含
L
标志来停止重写过程(至少是当前轮的处理.htaccess
),否则该请求也可能会被其他规则捕获。顺序很重要。最具体的规则需要放在第一位。因此,捕获
/user
请求的规则必须放在第一位。
例如:
RewriteRule ^user/([^/]+)$ index.php?user=$1 [L]
RewriteRule ^([^/]+)/(.*)$ detail-produktu.php?kategorie=$1&nazev=$2 [L]
我已将图案。如果需要尾部斜杠,请将其添加回来。我还对模式进行了更严格的限制,以便它匹配整个路径段,而不是任何事物。