Apache RewriteRule, – (短划线)作为替代

我经常在PHP MVC应用程序中看到一个Apache RewriteRule,它看起来像这样:

RewriteRule ^.*$ - [NC,L] 

Apache上的文档说:

破折号表示不应该进行replace(现有的path是通过不变的)。 当需要应用一个标志(见下面)而不改变path时使用。

那么从我所收集的内容来看,你可以使用这个来使用一个标志来转换path,即RewriteRules遵循的[NC]

有人能解释一下这个破折号RewriteRule好一点吗?

看到这个答案:

mod_rewrite:这个RewriteRule做什么?

这基本上意味着“如果以前的RewriteConds匹配,什么也不做”。 当RewriteConds不匹配时,下一个RewriteRule(s)将会做一些其他的事情。 在我链接到的帖子的情况下,下一个RewriteRule重写URL包括“index.php”。

我知道这有点古怪,但它基本上说:“嘿,我可能要使用Rewrite,但是对于与上面的RewriteCond相匹配的URL,请保留并停止。

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]