2011-03-11 144 views
2

替换中的特殊字符串-(短划线)表示不需要替换,并且在需要应用规则时保留原始URL不变。.htaccess中的破折号(' - ')

所以:

RewriteRule ^(somefile|somedir|someotherfile) - [L] 

这告诉mod_rewrite的离开网址不变,并退出处理规则如果请求的子目录或文件的前缀是那些在替补名单中的一个。 如果所请求的子目录在列表中,则跳过此之后的所有规则。

我不明白为什么我们在这里需要短跑?为什么我们需要不改变原始网址。既然我们说这个规则是[L](最后),如果有任何列表选项是这种情况,为什么我们需要-(破折号)?

回答

3

它只是在那里有一个一致的语法。破折号明确告诉httpd不要重写任何东西。试想,如果你删除的破折号什么httpd会认为该行:

RewriteRule ^(somefile|somedir|someotherfile) [L] 

括号中的标志将被解释为重写目标,你会重写所有匹配的URL来代替[L]