URL을 인수로 전달하면 Apache가 실패합니다.


0

안녕하세요, 저는이 문제에 대해 혼란 스러웠습니다. 나는 그것을 설명하려고 노력할 것이다.

문제는 다음과 같습니다. http://mydomain.com/somedir/somephp.php?arg1=value&arg2=http://otherdomain.com&arg3=http://othertoo.com/somepath/something ...은 완전히 실패합니다. URL 인코딩과 함께.

내 사이트는 존재하는 파일과 디렉토리를 제외하고 mydomain.com/everything 이후의 모든 내용을 읽습니다. mod_rewrite로하고 있습니다.

Options -Indexes 

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ handler.php

위의 쿼리 예제는 handler.php에 있습니다. RewriteRule을 주석 처리하면 아파치 오류가 발생합니다.

Forbidden

You don't have permission to access /somedir/somephp.php on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

많은 테스트 등, 나는 URL 인수에 http : // 또는 : // 문자열에 문제가 있음을 알아 냈습니다. 그러나 URL로 인코딩 된 : S

이 항목은 openId 인증 시스템이어야하며 포스트 백에서 실패하며 url 인수의 url이이 오류를 발생시킵니다.

나는 전에이 문제를 결코 만나지 못했습니다. URL 인코딩이 작동해야합니다.

도와주세요! 고맙습니다!

답변:


0

"완전히 실패하다"는 것은 무엇을 의미합니까? 어떤 오류 코드가 있습니까? 서버 파일에 어떤 오류가 있습니까? 무엇이 나타 납니까?

다시 쓰기 규칙은 괜찮습니다! handler.php에 액세스 할 수있는 한 권한 오류는 제공하려는 파일이 아니기 때문에 중요하지 않습니다.

그러나 귀하의 오류는 위의 구성이 정확하게 시도한 것이 아니라고 생각합니다. 이 같은 경우 :

RewriteRule ^(.*)$ handler.php?a=b

쿼리 문자열 인수는 a = b로 덮어 써서 동맹을 잃게됩니다. 그런 다음 수행 할 수있는 작업은 다음과 같습니다.

RewriteRule ^(.*)$ handler.php?a=b [QSA]

아파치에게 쿼리 문자열을 추가하도록 지시합니다 (QSA = QueryStringAppend)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.