2011-06-10 40 views
1

我寫過一個htaccess文件的動態縮略圖創建器,查看請求的文件是否存在,以及是否將用戶發送到php頁面來創建它。我htaccess文件是這樣的:htaccess:無法檢查動態文件的存在!

# Check the formatting (this works) 
RewriteCond %{SCRIPT_FILENAME}%{QUERY_STRING} /([a-zA-Z0-9-]+).(jpg|gif|png)w=([0-9]+)&h=([0-9]+)(&c=(true|false)) 

# Only forward to thumbnail.php if file doesn't exist 
#RewriteCond %{REQUEST_FILENAME} !-f #this works but not for the correct filename! 
RewriteCond %1-%2-%3-%4-%6.jpg !-f  # Doesn't work!!! 

# If file doesn't exist, send here: (this works) 
RewriteRule ^.*$ thumbnail.php?file_name=%1&type=%2&w=%3&h=%4&c=%6 

我的文件的存在檢查似乎並沒有然而,工作...使用%{REQUEST_FILENAME}作品的老版本,但這不是正確的文件名,我需要檢查。我已驗證新文件%1-%2-%3-%4-%6.jpg具有正確的輸出,但不會觸發條件!

基於此網址:

this-is-the-image-name.gif?w=200&h=100&c=true 

的htaccess文件應該檢查​​這個文件是否存在:

this-is-the-image-name-gif-200-100-true.jpg 

縮略圖和htaccess文件都在同一個文件夾,但該文件夾是未知並且不能被硬編碼。它是否需要完整的路徑來檢查?如果是這樣,我怎樣才能得到完整的路徑,但我的自定義文件名?

拉我的頭髮與這一個... 幫助!謝謝。

+0

這是一個很好的國防部重寫問題,我加入國防部重寫標籤,但你應該嘗試問它ServFault,你會發現這個地方的一些國防部重寫天才。 – regilero 2011-06-11 19:13:28

+0

** thumbnail.php **文件位於何處? – 2011-06-14 12:45:30

+0

@Creadiff thumbnail.php文件位於與要檢查的縮略圖文件相同的目錄(媒體/縮略圖/)中。 – RANGER 2011-06-14 17:48:41

回答

0

您可以使用PHP腳本,以取代傳統的 「404錯誤」 頁:

$url = $_SERVER["REQUEST_URI"]; 

參數可以通過檢索:

ErrorDocument 404 thumbnail.php 

然後,您可以使用PHP檢索請求的URL功能preg_match

+0

那麼它會一直給404,因爲我正在請求的文件名不存在,因爲我正在使用查詢字符串來設置大小。我不確定會有多大的速度差異,但我試圖避免存在必須由php文件路由的圖像......這是它當前所做的(PHP文件中的file_exist)。 – RANGER 2011-06-14 17:52:15

+0

爲什麼你不直接像這樣命名你的照片:** this-is-the-image-name-gif-200-100-true.jpg **?你不需要重寫。因此,現有的圖像將直接由Apache發送,並且只有PHP生成的圖像可以通過PHP腳本進行路由(這種情況發生的頻率會比我想象的要少得多)。 – 2011-06-14 18:17:22

+0

確切地說,這就是我最初做的,但客戶更喜歡這種語法。我有一個[姊妹問題在這裏](http://stackoverflow.com/questions/6348045/fastest-way-to-redirect-missing-image-files/),我嘗試解決問題的這一方面。 – RANGER 2011-06-14 22:04:47