1
我將所有圖像集中到服務器上的一個文件夾中。我有幾個網站使用單個集中式引擎爲每個域獲取各自的內容。對於圖像的目錄結構:.htaccess爲多個域重寫
images/
website1.com/
image1.jpg
image2.jpg
...
website2.com/
image1.jpg
image2.jpg
...
website3.com/
image1.jpg
image2.jpg
...
然而,當我要求從HTML這些圖像資源之一,我不希望使用的網址:
http://website1.com/images/website1.com/image1.jpg
相反,我只是想:
http://website1.com/images/image1.jpg
有兩種情況,我需要這個翻譯然而。 Live服務器和開發服務器。現場案例看起來很簡單,將%{HTTP_HOST}重寫到路徑中。開發服務器的情況有點不同。我使用名爲dev_domain的cookie來查看測試網站。即:$ _COOKIE ['dev_domain'] = website1.com。
制定實例和開發服務器案例的規則是什麼?
這是我迄今爲止的發展情況,但它不工作:
RewriteBase/
RewriteCond %{HTTP_COOKIE} dev_domain=([^;]+) [NC]
RewriteCond %{THE_REQUEST} ^/images/(.*)$
RewriteRule ^/images/(.*)$ images/%1/$1 [NC,L]
這就是我對生活的情況下,目前還不能確定是否可行與否,因爲我沒有推它住(條件是排除開發服務器):
RewriteCond %{HTTP_HOST} !^dev.mainsite.com$
RewriteRule ^/images/(.*)$ /images/%{HTTP_HOST}/$1 [NC,L]
任何想法我做錯了什麼?
感謝您的意見,我會盡力。你能幫我用cookie格式嗎?我對結構不太確定。也許我需要做的只是刪除前導斜線,但我不知道是否有其他錯誤。謝謝! –
我試圖與僅此其不工作: 'RewriteBase/ 的RewriteCond%{HTTP_COOKIE} dev_domain =([^] +)[NC] 的RewriteCond%{THE_REQUEST} ^圖像/(.*)$ 重寫規則^ images /(.*)$ images /%1/$ 1 [NC,L]' 我刪除了「%{THE_REQUEST}」行,並且得到了500錯誤。我仍然試圖找出爲什麼cookie不被識別。我知道cookie存在。謝謝。 –
查看你的錯誤日誌,看看500的原因。我懷疑有一個重寫循環,在這種情況下,你需要'RewriteCond%{REQUEST_FILENAME}!-f RewriteCond%{REQUEST_FILENAME}!-d'來防止重寫實際存在的文件。 –