首页 > 解决方案 > 用于 angularjs 的 Apache rewrite_rule

问题描述

我在 Angularjs 应用程序中有这个规则。它完美地工作。但我想了解一个我不知道它的作用的规则RewriteRule ^.*$ - [NC,L] #???

RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -!f 
RewriteRule ^.*$ - [NC,L] #NC none-case-sensitive, L stop when match
RewriteRule ^(.*) index.html [NC,L] 

请在这条规则上帮助我,RewriteRule ^.*$ - [NC,L]我知道这些[NC,L]标志,但在规则结束时我并没有得到^.*$ -特别的空破折号。

标签: apache2.4

解决方案


的语法RewriteRule是:

RewriteRule Pattern Substitution [flags]

你的规则是:

RewriteRule ^.*$ - [NC,L]
  • ^.*$是 perl 兼容的正则表达式,其中

    • ^是字符串的开头
    • .是除换行符以外的任何字符
    • *表示0次或多次
    • $是字符串的结尾。
  • 替换的-意思是:“不应该执行替换(现有路径通过未触及)。当需要应用标志而不更改路径时使用此选项。”

  • 标志是NCL,这意味着:

    • NC:使模式比较不区分大小写。
    • L:立即停止重写过程,不再应用任何规则。特别注意每个目录和 .htaccess 上下文的注意事项(另请参见 END 标志)。

所以这条规则匹配任何东西,不做任何替换,并立即停止重写过程。


推荐阅读