Apache mod_重写规则不会忽略包含非拉丁字符的图像路径
这是我的mod_重写巫毒:Apache mod_重写规则不会忽略包含非拉丁字符的图像路径,apache,mod-rewrite,utf-8,Apache,Mod Rewrite,Utf 8,这是我的mod_重写巫毒: 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.j
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的网络小组证实了这一点)。因此,重写条件无法检测到这是针对实际文件的
我已将
AddDefaultCharset UTF-8
添加到.htaccess文件中,但这没有帮助。让我头疼的是,在本地(在Windows上)使用XAMPP进行测试时,我没有这个问题,但我在我的服务器上有这个问题(Dreamhost托管它)。我不知道两者之间的区别是什么,也不知道还能做些什么,所以我求助于你们的集体智慧。根据这些评论,我建议:
让我随时了解您的最新发现。这是一个很好的问题,也是我应该想到的一点-呸!我不能,我得到了404。服务器试图查找的URL不同:
http://example.com/Ãrhus/some_image.jpg
这是错误的Å(显然),我以前见过UTF8字符未正确解码的情况。我现在不知道该怎么处理这些新信息。我查看了访问日志。我看到了:86.30.140.183---[18/Apr/2011:10:04:12-0700]“GET/%C3%85rhus/some_image.jpg HTTP/1.1”404516http://example.com/%C3%85rhus/some_image.jpg“Mozilla/5.0(Windows NT 6.0;rv:2.0)Gecko/20100101 Firefox/4.0”
我确保了。htaccess保存为UTF8,但仍然没有运气。很明显,Apache没有正确理解包含UTF8字符的URL。我刚刚尝试在名为“Århus”的目录中创建一个新文件index.html。Apache未能提供该页面,并给了我与以前相同的404(其中包含Ã)。即使我对Å(%C3%85)使用编码版本,它也会失败。我在Dreamhost的面板中查看了与角色集相关的任何选项,但没有看到任何选项。我不知道如何“告诉”服务器在UTF8中执行所有操作。非常感谢你的帮助,顺便说一句,M'vy-非常感谢。