我经常在PHP MVC应用程序中看到一个如下所示的Apache RewriteRule:
RewriteRule ^.*$ - [NC,L]
关于Apache的文档说:
破折号表示没有替代品 应该执行(现有的路径 通过未触动过)。这是 当一面旗帜(见下文)需要时使用 在不改变路径的情况下应用。
所以从我收集的内容中,您可以使用它来转换路径,使用一个标志,即[NC]来跟随RewriteRules?
有人可以更好地解释一下这个破折号RewriteRule吗?
答案 0 :(得分:12)
看到这个答案:
mod_rewrite: what does this RewriteRule do?
它实质上意味着“如果以前的RewriteConds匹配则不做任何事”。当RewriteConds不匹配时,下一个RewriteRule将改为做其他事情。在我链接到的帖子的情况下,下一个RewriteRule重写包含“index.php”的URL。
答案 1 :(得分:8)
我知道这有点旧,但它基本上说“嘿,我可能想要使用Rewrite,但对于与上述RewriteCond匹配的网址,请保留并停止。”
EX:
# If file or directory exists, we wanna send them there
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [L]
# Otherwise, use our smart page handler!
RewriteRule ^(.*)\.php$ virtualPage.php?page=$1 [L]