2011-04-18 78 views
1

忽略這裏是我的mod_rewrite的巫術:圖像路徑不被mod_rewrite的規則

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule . index.php [L,QSA] 

如果圖像路徑中都有非拉丁字符,這些字符不顯示。無論非拉丁字符是否在目錄名稱的圖像名稱中,都會發生這種情況。示例圖像URL:

http://example.com/Århus/some_image.jpg # broken image placeholder in browser 
http://example.com/beer/øl.jpg   # same 

我已檢查並且標記中圖像的路徑是正確的。但mod_rewrite將這些圖像的請求重定向到index.php(Firebug的網絡小組證實了這一點)。因此,RewriteCond無法檢測到這是針對實際文件的。

我已將AddDefaultCharset UTF-8添加到.htaccess文件中,但這沒有幫助。讓我感到困惑的是,在本地(在Windows上)使用XAMPP進行測試時,我沒有這個問題,但是我在我的服務器上執行(Dreamhost託管它)。我無法弄清楚兩者之間的區別是什麼或做什麼,所以我轉向你的集體智慧。

+0

優秀的問題,和我應該想到的 - 杜!我不能,我得到了404。服務器試圖找到的URL是不同的: 'http:// example.com /Ãrhus/ some_image.jpg' 這是錯誤的Å(顯然),我已經當UTF8字符沒有正確解碼時,可以看到它。 雖然我不知道如何處理這些新信息。 – Rafael 2011-04-18 15:46:03

+0

我在訪問日誌裏隱藏起來。我看到: '86.30.140.183 - - [18/Apr/2011:10:04:12 -0700]「GET /%C3%85rhus/some_image.jpg HTTP/1.1」404 516「http:// example。 com /%C3%85rhus/some_image.jpg「」Mozilla/5.0(Windows NT 6.0; rv:2.0)Gecko/20100101 Firefox/4.0「' – Rafael 2011-04-18 17:09:44

回答

0

基礎上的意見,我會建議:看

  1. 嘗試,如果主機配置了UTF-8(系統本身)
  2. 驗證Apache的文件爲UTF-8編碼
  3. 是在全局配置文件中設置的默認字符集?可能會改變行爲。

讓我更新你發現的內容。

+0

我確保.htaccess保存爲UTF8並且仍然沒有運氣。很明顯,Apache不能正確理解包含UTF8字符的URL。我只是嘗試在名爲「Århus」的目錄中創建一個新文件index.html。 Apache無法爲該頁面提供服務,併爲我提供與以前相同的404(使用其中的Ã)。即使我使用編碼版本的Å(%C3%85),它也會失敗。 我在Dreamhost的面板中查看了任何與字符集相關的選項,但沒有看到任何選項。我不知道如何「告訴」服務器以UTF8做所有事情。 非常感謝您的幫助,BTW,M'vy - 非常感謝。 – Rafael 2011-04-18 16:27:38