【发布时间】:2012-01-18 07:39:22
【问题描述】:
我正在使用 htaccess 来管理友好的网址
我的友好网址如下所示:
www.example.com/p/12345/John-Smith
12345 是 ID 号,/p/ 不变,名称是无关的友好 url。我的背景网址如下所示:
www.example.com/page.php?id=12345
我的 htaccess 看起来像这样:
Options +FollowSymlinks
RewriteEngine on
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
RewriteRule ^p/([0-9]+)/([^/\.]+)?$ details.php?id=$1 [L]
一切都像魅力一样。
但是,我真正希望我的 htaccess 如下所示。唯一不同的是 ^(.*)/p/ 与 ^p。
Options +FollowSymlinks
RewriteEngine on
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
RewriteRule ^(.*)/p/([0-9]+)/([^/\.]+)?$ page.php?id=$1 [L]
基本上,我想确保只有 url 中的 /p/ 目录触发这个特定的 htaccess 规则,而不是意外的东西,比如 example.com/gdp/12345/abc
对于我的一生,我无法弄清楚为什么这不起作用!
一如既往地提前致谢。
【问题讨论】:
-
第一条规则重写 yoururl.tld/p/1234/Name,第二条规则重写如下:yoururl.tld/Something/p/1234/Name 但不是 yoururl.tld/Somethingp/1234/名称..所以这正是您所描述的。如果我误会了,请告诉我?
-
^表示网址的开头。所以p/...前面什么都不允许。所以example.com/gdp/12345/abc永远不会匹配第一条规则。试试看。您的统治已经完全按照您的意愿行事。