为什么^会干扰.htaccess中的[NC]?

时间:2017-03-05 15:59:20

标签: apache .htaccess

这是我用于测试目的的.htaccess文件。这是整个文件。

RewriteEngine On

<IfModule mod_rewrite.c>
    RewriteCond %{REQUEST_URI} asdf [NC]
    RewriteRule .* https://www.example.com/test/note.txt [R=302,L]
</IfModule>

[NC](无案例)就像冠军一样。 asdfASDFAsDf都会触发重写规则。但是,如果我将^符号[NC]停止工作。例如,

RewriteCond %{REQUEST_URI} ^asdf [NC]

^符号出现时,只有asdf触发重写。 ASDF会抛出404.我可能会遗漏某些内容,但由于某种原因,^似乎会干扰[NC]。这是为什么?

1 个答案:

答案 0 :(得分:1)

^是正则表达式中的零宽度断言,用于断言字符串的开始。它不会干扰NC标志。问题是REQUEST_URI变量以前导斜杠开头,即/,因此您可以使用此规则:

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_URI} ^/asdf [NC]
    RewriteRule ^ https://www.example.com/test/note.txt [R=302,L]
</IfModule>