2017-03-05 64 views
0

这是我用于测试目的的.htaccess文件。这是整个文件。为什么^在.htaccess中干扰[NC]?

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

- 你发布的代码不可能 - 这听起来像是一个缓存问题。 – MrWhite

回答

1

^是正则表达式中的零宽度断言,用于断言字符串的开始。这里不干涉NC的标志。问题是,REQUEST_URI变量与一家领先的斜线即/启动,因此,您可以使用此规则:“有了``^只签署本`asdf`触发重写`ASDF`抛出一个404”

<IfModule mod_rewrite.c> 
    RewriteEngine On 

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

感谢anubhava,但我将该行更改为'RewriteCond%{REQUEST_URI} ^/asdf [NC]',当我在浏览器的地址栏中尝试ASDF时,它仍然抛出404。 – DR01D

+1

什么是您在浏览器中输入的确切URL,并确保您清除浏览器缓存 – anubhava