2009-09-09 71 views

回答

24
RewriteEngine On 
RewriteCond %{REQUEST_URI} \.(jpg|jpeg|gif|png|ico)$ [NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .*$ /no_picture.png [L] 

讓我們分解一下每條線的含義。看到

RewriteCond %{REQUEST_URI} \.(jpg|jpeg|gif|png|ico)$ [NC] 

檢查所請求的文件是在括號()文件擴展名的。在這種情況下,我們正在測試,看看文件名在任一.jpg.jpeg.gif.png.ico

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

檢查結束,該文件不存在,它也沒有目錄。

RewriteRule .*$ /no_picture.png [L] 

如果請求的資源/文件通過了所有這些測試,那麼它是不存在的圖像。因此,請將no_picture.png的圖像發回給瀏覽器。這將保留文件名。如果你想重定向到no_picture.png名,更改[L][R]

1
RewriteCond %{REQUEST_URI} pic/(.*) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule pic/(.*)   pic/no_picture.png [L,E=STATUS:404] 
1

在你的/ images /目錄下,添加到您的.htaccess

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule no_picture.png [L] 

,說,如果請求的文件不存在,改寫它no_picture.png

+0

不就是包括不存在HTML或其他文件類型? – random

+0

是的,它會爲任何事情。這就是爲什麼我提到它是針對特定圖像目錄的原因。它可以被修改爲僅匹配某些文件擴展名(如其他答案所做的那樣)。 –

4

這也應該工作:

<FilesMatch "\.(jpg|jpeg|png|gif)$"> 
ErrorDocument 404 "/no_picture.png" 
</FilesMatch> 
相關問題