2012-08-15 150 views
1

請建議我把什麼放入.htaccess文件。圖片的友好網址

我對服務器http://domain.tld/images/anyimage.anyextension

PNG,GIF,JPG圖像想讓網址像http://domain.tld/anyimage.anyextension


這是我現在有更多的友好。前兩個字符串如上所述更改鏈接。但最後一個字符串不會將其更改回服務器。

RewriteCond %{REQUEST_URI} ^/images/(.+)(\.gif|\.jpg|\.png)$ [NC] 
RewriteRule ^image/(.+)$ /$1 [R=301,L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^/(.+)$ /images/$1 [L] 

如果我以前的查詢字符串規則之後添加

RewriteCond %{REQUEST_URI} ^/([^/.]+\.(png|gif|jpg))$ [NC] 
RewriteCond %{DOCUMENT_ROOT}/image/%1 -f 
RewriteRule ^([^/.]+\.(png|gif|jpg))$ /image/$1 [L,NC] 

右鍵然後圖像不開。如果之前沒有問題。它可能是什麼?你有一個想法如何解決它?最後一個字符串RewriteRule ^/?(.+)$ /?$1 [L]從它變短造成這種衝突

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /\?([^\ ]+) [NC] 
RewriteRule ^$ /%1? [R=301,L] 
RewriteCond %{QUERY_STRING} ^$ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^/?(.+)$ /?$1 [L] 

回答

1

不知道如何使它更加友好,一邊。你可以在你的文檔根目錄嘗試添加這htaccess的文件:

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/([^/.]+\.(png|gif|jpg))$ [NC] 
RewriteCond %{DOCUMENT_ROOT}/images/%1 -f 
RewriteRule ^([^/.]+\.(png|gif|jpg))$ /images/$1 [L,NC] 

然後你可以從http://domain.tld/images/anyimage.anyextension所有鏈接更改爲http://domain.tld/anyimage.anyextension

第一個條件檢查,以確保請求的是anyimage.anyextension,只要擴展名是不區分大小寫的png,gif或jpg。

第二個條件檢查以確保請求的圖像實際存在於/images/目錄中。


RewriteEngine On 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /images/(.+)(\.gif|\.jpg|\.png) [NC] 
RewriteRule ^image/(.+)$ /$1 [R=301,L] 

這將瀏覽器重定向到非/圖像/ URL。這裏有兩件完全不同的事情。一個涉及瀏覽器,另一個涉及服務器上的內容。請參閱this answer that explains how they are different的頂部。

您擁有的規則將不起作用。第一張:

RewriteRule ^/(.+)$ /images/$1 [L] 

永遠不會匹配。用於匹配htaccess文件中的RewriteRule的正則表達式的URI具有刪除的前導斜槓,因此沒有URI將以/開頭。你需要擺脫它。

其次,一旦你這樣做,你會得到一個500內部服務器錯誤,因爲你的規則會導致內部無限循環。您需要與%{THE_REQUEST}匹配,以確保瀏覽器實際上請求的是其中包含/images/路徑的URL,而不是內部重寫的內容。

+0

不知道爲什麼,但在應用此規則後,它不會將它們從http://domain.tld/images/anyimage.anyextension更改爲http://domain.tld/anyimage.anyextension。我自己制定了以這種方式更改鏈接的代碼,但無法找到將其更改回服務器的代碼。請參閱我的文章末尾編輯。 – slfkjsdlfkj 2012-08-15 04:37:56

+0

所以我的方法根本不起作用?喬恩我再次檢查你的方法,似乎它的工作。你是上帝!沒有正確的我想要的。只是我第一次不明白你方法的原理。再次感謝!你還記得我問過刪除.html擴展名和查詢字符串規則之間的衝突嗎?我形容這是一個單獨的問題。請你也可以在那裏幫助:[鏈接](http://stackoverflow.com/questions/11963856/removing-html-extension-rules-conflict) – slfkjsdlfkj 2012-08-15 06:01:48

+1

@ user1586029我快速看了一下,但我不知道爲什麼SSI不工作。如果我發現錯誤,我會在這個問題上發佈一些信息。同時,如果這些答案是正確的,你應該[接受他們作爲答案](http://meta.stackexchange.com/a/5235/171219)。這是這個網站的工作方式,人們不太可能幫助那些接受率低的人,並且接受答案會將問題標記爲已解決,因此當其他人遇到同樣的問題時他們知道有答案。 – 2012-08-15 06:08:12