2013-02-26 29 views
1

我試着寫.htaccess規則應用於特定REQUEST_FILENAME象下面這樣:如何爲特定文件提供.htaccess RewriteRule?

RewriteCond %{REQUEST_FILENAME} ^/my_file.txt 
RewriteRule ^.*$ - [NC,L] 

這個特定的文件是0KB文件大小。我已經有一條規則來忽略那些文件,如

`RewriteCond %{REQUEST_FILENAME} -s  
RewriteRule ^.*$ - [NC,L]` 

這個空文件用於分析用法。

但這不是我所期望的。我只是想,如果REQUEST_FILENAMEmy_file.txt按原樣閱讀。上述代碼中是否有語法或錯誤?

謝謝...

+0

只需在重寫規則和條件之前插入:'RewriteCond%{REQUEST_URI}!my_file.txt [NC]'。 – 2013-02-26 06:32:55

+1

不完全。在你的問題的最後兩行之前放置該行。在此之前'RewriteCond%{REQUEST_FILENAME} -s'。 – 2013-02-26 06:41:51

+0

@faa耶這似乎是正確的答案。如果你想要投票,請把它作爲答案:) – Miuranga 2013-02-26 06:46:45

回答

1

從規則中排除my_file.txt的方式,是這樣的:

# Insert the next line 
RewriteCond %{REQUEST_URI} !my_file\.txt [NC] 
RewriteCond %{REQUEST_FILENAME} -s  
RewriteRule ^.*$ - [NC,L] 
+0

@miuranga不客氣。 – 2013-02-26 06:50:41

0

更好:

RewriteCond %{REQUEST_FILENAME} -s 
RewriteRule !^/?my_file\.txt - [NC,L] 

這會比其他my_file每個文件相匹配。 txt,如果它是一個0size文件重寫結束。

http://httpd.apache.org/docs/current/mod/mod_rewrite.html

在mod_rewrite的,該不是字符( '!')也可作爲一個 可能的模式前綴。這使你能否定一個模式;比如說: 例如:``如果當前URL不符合這種模式''。