我正在爲CMS編寫動態縮略圖創建器,並需要動態檢查文件是否存在。我目前已經創建了一個htaccess文件,用於檢查您請求的文件是否存在,但需要它更高級一些,並根據提交的URL選項「創建」文件檢查。htaccess:根據變量檢查文件是否存在
這是我目前有(基於圖像的ID,而不是名稱):
RewriteEngine on
#Check for file existence here and forward if exists
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9]+)-([0-9]+)-([0-9]+)(-(crop))?\.jpg$ thumbnail.php?id=$1&w=$2&h=$3&c=$4 [L,QSA]
基於此網址:
this-is-the-image-name.gif?w=200&h=100&c=true
一個htaccess文件,檢查文件是否存在:
this-is-the-image-name-gif-200-100-crop.jpg
如果它不存在它RewriteRules用戶:
thumbnail.php?name=this-is-the-image-name&type=gif&w=200&height=100&c=true
「剪裁」是可選的,所以沒有它前面的網址是這樣的:
this-is-the-image-name.gif?w=200&h=100
this-is-the-image-name-gif-200-100.jpg
thumbnail.php?name=this-is-the-image-name&type=gif&w=200&height=100
基本上,我需要的RewriteCond檢查文件是否存在,基於它創建基於文件名REQUEST_FILENAME
。有任何想法嗎?
事情是這樣的:
RewriteCond ^([a-zA-Z0-9-]+).(jpg|gif|png)?w=([0-9]+)&h=([0-9]+)(&c=(-crop))?\.jpg$ %$1-$2-$3-$4-$6.jpg !-f
甚至不知道這是可能的......在這種情況下,我會向前所有請求到PHP文件,但由於PHP有很多開銷我認爲這會更快。
非常感謝您提前提供任何幫助!
這正是我所期待的。當我導航到:this-is-the-image-name.gif?w = 200&h = 100&c = true'時,它現在似乎沒有轉發,而是它說:'未找到:請求的URL/dev/media /thumbnails/this-is-the-image-name.gif未在此服務器上找到。雖然沒有收到內部服務器錯誤,所以它似乎是正確的語法。 – RANGER 2011-06-09 19:43:43
忘記在評論中標記你的句柄;) – RANGER 2011-06-09 19:44:27
所以這似乎是工作,除了規則規定,只有* last * RewriteCond的反向引用將被使用...因爲該文件不會總是一個gif(jpg | gif | png)我需要找到一種方法來保存第一個RewriteCond的文件類型。我還將'REQUEST_FILENAME'換成了'REQUEST_BASENAME' ... – RANGER 2011-06-09 21:30:48