mod_rewrite를 사용하여 다음과 같이 URL을 다시 작성합니다.
http://example.com/1,2,3,4/foo/
.htaccess에서이를 수행하면 :
RewriteEngine On
RewriteRule ^([\d,]+)/foo/$ /foo.php?id=$1 [L,QSA]
"1,2,3,4"가 255자를 초과하는 문자열로 바뀌는 경우를 제외하고는 잘 작동합니다. Apache는 "403 Forbidden"을 반환합니다.
foo.php?id=1,2,3,4
ID 문자열이 매우 길더라도 직접 방문하는 데 아무런 문제가 없지만 옵션은 아닙니다.
내가 조정해야 할 Apache 또는 다른 설정이 있습니까?
업데이트 : RewriteLogLevel 9로 RewriteLog를 켰습니다. 짧은 ID 문자열을 사용하면 로그 파일에 여러 줄이 나타납니다. 그러나 id 문자열이 255자를 초과하면 아무것도 기록되지 않습니다 (mod_rewrite가 실행되지 않는 것처럼 보입니다).
이 질문이 흥미 롭거나 도움이된다고 생각되면 투표하십시오.
RewriteLog
하고 RewriteLogLevel
그래서 당신은 일치되고 있으며이 정말 어떻게 다시 작성되고 있는지 확인할 수 있습니다. 나는 255 문자로 복사되고 있음을 추측 것 $1
, 그 끝나는 것을 끝내 id
아파치 내가 코드를보고하지 않은 (403)를 반환 있도록 클라이언트가 참조 할 수있는 권한이 부여되지 않은,하지만 그 아파치를 조작 할 수있다 고정 된 256 바이트 버퍼의 역 참조 (256 번째는 NULL 종료를 위해 예약 됨)