2011-01-17 4 views
1

들어오는 모든 요청을 단일 스크립트 (웹 루트의 index.php)를 통해 처리하려고합니다. 에 http://localhost/foo/bar/bazmod_rewrite의 아파치와 백 슬래시

이 (.htaccess를 통해) 아파치 라우팅 : : 이것은 파이어 폭스에서, 그러나, 잘 작동 http://localhost/index.php?url=foo/bar/baz


난 할 수 있어요

그래서, 다음은 현재 일어나는 것이다 : http://localhost/foo\ ->백 슬래시에 주목하십시오.

그리고 아파치 대신 일을 :

오브젝트를 찾을 수 없습니다 : /index.php?url=foo\

는 일반 오류 페이지 말을 발행합니다! 요청한 URL 을 (를)이 서버에서 찾을 수 없습니다. URL을 수동으로 입력 한 경우 철자를 확인하고 다시 시도하십시오.

서버 오류라고 생각되면 웹 마스터에게 문의하십시오.

오류 404 로컬 호스트 아파치/2.2.14 (는 Win32) DAV/2의 mod_ssl/2.2.14 OpenSSL을 /0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl을 /2.0 .4 Perl/v5.10.1

직접가는 : http://localhost/index.php?url=foo\은 문제없이 작동합니다. 내가 인터넷에서 본


모든 사이트가 정상적으로 백 슬래시를 처리 할 수있을 것 (예를 들어, http://stackoverflow.com/tags/php\\\\\).

이 동작은 버그라고 생각하고 Apache가 백 슬래시를 올바르게 전달하도록합니다. 여기에 전체 내 .htaccess 파일의 :

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?url=$1 [L] 

어떻게 적절하게이 일을 할 수 있습니까?


편집 : 나는 웹 호스트에서 이것을 시도했지만 제대로 처리됩니다. httpd.conf의 일부 설정이라고 생각하겠습니다.

+0

가능한 버그 : https://issues.apache.org/bugzilla/show_bug.cgi?id=42499 또한 htaccess'AllowEncodedSlashes On '에 추가하십시오. – RobertPitt

+0

@RobertPitt : 감사합니다. AllowEncodedSlashes에 대해 몰랐습니다. '. 내'.htaccess' 파일에 추가 할 때 서버 ISEs (HTTP 500). 이것은 로컬 개발 상자 (Windows) 및 웹 호스트 (Linux)에서 발생합니다. 아파치 문서를 보면, 컨텍스트가 '서버 설정, 가상 호스트'로 나열되어있어'.htaccess'를 지원하지 않는 것 같습니까? – NuCalTone

답변

0

아마도 슬래시로 허용되는 것을 허용하지 않으려면 AcceptPathInfo가 꺼져 있어야합니다.

0

Windows의 WampServer에서이 문제가 발생했습니다. This page 솔루션했다 - RobertPitt 위에서 언급 올바른 하나입니다 AllowEncodedSlashes 옵션을하지만, VirtualHost 항목 블록 내부의 http.conf 파일의 예를 이동해야합니다

<VirtualHost *:80> 
    AllowEncodedSlashes On 
</VirtualHost> 

그것은 .htaccess 파일에서 작동하지 않습니다.

관련 문제