2017-03-05 68 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