2012-03-14 20 views
7

以下是我在.htaccess現在有了,這應該在今後的工作中:的.htaccess重寫映像文件的PHP腳本

RewriteEngine On 

RewriteCond %{HTTPS} !=on 
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] 

RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

的問題是:

我怎麼能做出這樣的重寫/tmp/some_image.png -> /image.php?file=some_image.png

我試圖做出自己的規則,但沒有成功。

謝謝。

回答

13

/tmp是您的網絡服務器可訪問的目錄嗎?我希望它是一個單獨的/ tmp文件夾,而不是服務器的實際/ tmp,因爲這會帶來安全風險。

無論如何,如果圖像是一個物理文件,那麼您需要重寫強制HTTPS後,條件檢查,如果它是一個文件或目錄之前,把這個:

RewriteRule ^/tmp/([^\.]+)\.png$ /image.php?file=$1.png [NC,L] 

你可以檢查其他擴展爲好:

RewriteRule ^/tmp/([^\.]+)\.(png|jpg|gif)$ /image.php?file=$1.$2 [NC,L] 

或者,如果你不關心(一切盡在您的TMP文件夾中的圖像。雖然我不會推薦)

RewriteRule ^/tmp/(.*)$ /image.php?file=$1 [NC,L] 

如果它不是物理文件,您可以將其中的任何一個放在規則的末尾。

+0

感謝,偉大的答案! – user973254 2012-03-14 14:51:11

+0

這條規則'RewriteRule ^/tmp /([^ \。] +)\。(png | jpg | gif)$ /image.php?file=$1.$2 [NC,L]'如果圖片有'。'在其文件名中,例如。 'file.name.jpg' – 2016-11-03 15:12:27

+0

使用'RewriteRule ^/tmp /(。+)\。(png | jpg | gif)$ index.php?file = $ 1. $ 2 [NC,L]'如果您想允許帶有多個'.'的文件名 – 2016-11-03 15:21:00