2012-01-16 16 views
0

雖然瞭解設置很重要,但我有點工作。Apache重寫:只重寫索引URL,無論文件擴展名例外的深度如何

有了多域支持(使用完全相同的軟件副本的多個域),我只需要重寫目錄(它完全像dir1 /或dir2 /那樣結束)。

視覺這裏了文件的參考...

site1.com/gallery/image.jpg

site2.net/gallery/image.png

gallery/(這裏的PHP代碼)

.htaccess

所以我想只有目錄改寫爲gallery /,而所有圖像文件(擴展名)被重寫爲site1/gallery/image.jpg路徑。

我目前只改寫了基本圖庫/路徑,但它不會重寫更深的圖庫索引(例如圖庫/ my_gallery /),但是圖像異常也可以。

RewriteEngine on 
RewriteRule ^[^/]*/gallery/$ gallery/$1 [QSA] 
RewriteCond %{REQUEST_URI} !\.(gif|jpg|png)$ 

RewriteCond %{REQUEST_URI} !.*/(gallery|admin|blog) 
RewriteRule !\.(css|js)$ index.php 

那麼如何在不管深度情況下捕獲所有目錄,同時保持圖像文件異常呢?我很樂意作出任何澄清,並接受一個有效的答案並對其進行投票。

回答

0

結果我需要做的就是將文件擴展名添加到重寫條件中。另外非常重要的是要注意,重寫條件必須出現之前的重寫規則。

RewriteEngine on 
RewriteCond %{REQUEST_URI} !\.(css|gif|ico|jpg|js|mp3|png|swf|xml)$ 
RewriteRule ^[^/]*/(gallery|admin|blog)(.+) $1$2 [QSA] 
RewriteCond %{REQUEST_URI} !.*/(gallery|admin|blog) 
RewriteRule !\.(css|js)$ index.php