我有一个我以前从未遇到的问题,我认为它与apache配置有关,我不太熟练。apache:查询字符串(URL)中的变音变音符导致403
首先,有一个带有搜索表单的php脚本。该表单通过POST传输。
然后是搜索结果列表。此处原始搜索查询作为url的一部分传递,例如:search.php?id = 1234 & query = foo。这也适用 - 只要没有元音变音(äöüÄÖÜß...)字符传输。
,只要我在搜索中包括查询,发送查询字符串作为POST工程的第一部分变音符号,但它传递(urlencoded的)的URL导致403
这样:
search.php?id=1234&query=bar
工作search.php?id=1234&query=b%E4r
导致403(%E4 = “A” UTF-8 urlencoded的)search.php?id=1234&query=b%C3%A4r
导致403(%C3%A4 = “A” UTF-8 urlencoded的)- 通过POST工程提交变音符号
我将应用程序从iso-8859-1转换为utf-8,但这没有什么区别。
我也在我的本地机器上对它进行了测试,在这里它完美地工作 - 如预期的那样。
远程服务器设置(如果它不工作):
的Apache/2.2.12(Ubuntu的),
PHP版本5.2.10-2ubuntu6.7,修补了Suhosin 0.9.7,通过CGI/FastCGI的
本地设置(同样在这里工作):
的Apache/2.2.8(Win32的)PHP/5.3.5
PHP 5版.3.5通过mod_php
有没有人有一个想法,为什么远程apache/php-cgi不接受正确的urlencoded元音变音的url?
附加信息:我也尝试创建一个名称为变音符号的静态文件,并且/t%C3%A4st.php
和/täst.php
都可以毫无问题地投入使用。 täst.php?foo=täst
失败。
注:?foo=%28
,其中28%是 “(”,作品也
迂腐,我知道,但“SS”没有变音... – Stephen 2011-02-01 12:53:19
对不起:)这是怎么超的那种-的特殊字符叫什么名字? – stefs 2011-02-01 13:02:28