ShortUrl:为什么选择一条线而不是另一条线?

时间:2012-11-22 10:54:42

标签: apache mod-rewrite

RewriteRule ^ihome/([^/]+) /index_ip.php?page=ihome [L]

RewriteRule ^([^/\.]+)/?$ index.php?page=$1 [L]

当我去site.local / ihome ....它会转到index.php?page = ihome。 然而ihome规则就在它之上。

我也试过了相反的方式。

我需要强制ihome到特定的模板文件。

1 个答案:

答案 0 :(得分:0)

这是因为第一条规则要求/存在,并且之后至少有一个非/字符。第二条规则没有(注意?之后的/。这就是为什么浏览到ihome会将您发送到index.php?page=ihome

您可以将第一条规则修改为^ihome/?([^/]+)?,以便斜杠和字符是可选的。虽然规则看起来有点奇怪,因为它会跳过ihome/example/secondslash。那是为了吗?