何时在mod_rewrite中使用[L]标志

时间:2016-06-04 09:15:04

标签: .htaccess mod-rewrite

有人能举例说明何时使用[L]标志?我在.htaccess文件中学习了mod_rewrite moudle,并且无法找到该标志的时间。

1 个答案:

答案 0 :(得分:1)

L标志仅表示停止应用后面的任何规则。给定相同的网址http://example.com/foo/bar?q=blah,并给出规则:

RewriteRule ^foo - 

RewriteCond %{REQUEST_URI} !^/bar.php
RewriteRule ^(.*)$ /bar.php?z=$1 

应用第一个规则并且URI通过不变(通过-目标)传递。然后重写引擎处理下一个规则,并将URI重写为/bar.php?z=foo/bar。将L添加到结尾时会发生什么:

RewriteRule ^foo - [L]

RewriteCond %{REQUEST_URI} !^/bar.php
RewriteRule ^(.*)$ /bar.php?z=$1 

网址http://example.com/foo/bar在第一条规则中不受影响,然后停止,因为L标记。如果网址为http://example.com/something/else,则第一条规则不匹配,并应用第二条规则,将URI重写为:/bar.php?z=something/else

请注意,由于重写引擎会遍历所有规则,直到URI停止更改,L标志 迭代。