2011-07-19 28 views
1

我有一個重定向到index.php所有請求,使CMS系統可以解析請求,並提供答案htaccess文件。但是顯而易見的原因,這不是實際存在所請求的路徑上(在下面情況下,這些都是通過使用FCK編輯器用戶上傳的文件)的文件OK,所以我在htaccess的一條規則如下:如何htaccess的做:如果在文件夾中的文件存在,爲它服務,如果沒有,提供blank.html

RewriteRule ^(.*)/fck/(.*) - [L] 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f 
RewriteRule ^.*$ - [L] 

這個偉大的工程,但問題是,現在我需要創建相反的規則:即當從文件夾/fck/文件不存在,則返回一些空白(或者找不到或不過我們想將它命名)頁面,不與打擾CMS。

這應該是很容易htaccess的做(好,OK,輕鬆擁有要問這個問題時聽起來很傻,但我不是專家htaccess的所有..)。可能有人請讓我知道該怎麼做?

回答

4

這應該爲你做的工作:

RewriteEngine On 
RewriteBase/

# do not do anything for already existing files 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule .+ - [L] 

# return /blank.php if no such file or folder in /fck/ 
RewriteCond ${REQUEST_FILENAME} !-f 
RewriteCond ${REQUEST_FILENAME} !-d 
RewriteRule ^.*/fck/.* /blank.php [L] 
# or use below line instead of the above line (comment and uncomment accordingly) 
# it will display 404 page (using 404 handler from your config: e.g. ErrorDocument 404 /404.php) 
#RewriteRule ^.*/fck/.* - [R=404,L] 

# your CMS rewrite rules go below 

注:

1)這種模式^.*/fck/.*假定FCK文件夾的子文件夾(例如example.com/one/fck/icon.png)。如果FCK文件夾位於網站根目錄(即example.com/fck/icon.png),然後需要的圖案在.htaccess中被改變以^fck/.*的網址沒有領先斜線/在重寫規則匹配時(除非這些規則是在服務器/虛擬主機的上下文中聲明,而不是的.htaccess)。

2)我不會說我在這(僅99.99%)100%肯定,但是這兩條線是相同的:

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f 
0

這個工作對我來說:

RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule (.*) $1 [QSA,L] 
相關問題