2014-01-26 4 views
1

에서 작동하는 규칙입니다 : 지역 아파치 2.4 서버에서htaccess로 재 작성 QueryString을 아파치 2.2에서 사라하지만 다음 2.4

RewriteRule ^api/([\w-]+)/?$ api.php?method=$1 [QSA] 

, 나 같은 재 작성 할 수 있습니다 :

/api/create-account/?name=abcd 

/api.php?method=create-account&name=abcd 

Apache 2.2 인 프로덕션 서버에서 요청은 api.php으로 이동합니다. 하지만 내 스크립트에서 쿼리 문자열 매개 변수를 찾을 수 없습니다. $_REQUEST, $_GET 또는 $_POST을 덤프하면 빈 배열 만 나타납니다.

무엇이 누락 되었습니까?

답변

2

당신은 Multiviews를을 해제해야합니다

Options -Multiviews 

Multiviews를은 실제 파일에 대한 요청과 일치하려고 알려주는 mod_negotiation 옵션입니다. /api/somtehin과 같은 요청을보고 api.php이라는 파일이 있으면 mod_rewrite를 완전히 우회하여 바로 해당 파일에 매핑됩니다.

+0

.htaccess에 추가해야합니까? – Salman

+0

@Salman htaccess 파일이나 가상 호스트 설정에 추가 할 수 있습니다. –

+0

'$ _SERVER' 덤프를 확인하면 실제로 Multiviews가 기본적으로 활성화되어있는 것처럼 보입니다. 나는 [PHP_SELF] =>/api.php/create-account /'를 본다. 그러나 그것은 제가 스크립트를 다르게 작성했기 때문에 제가 원하는 것입니다. – Salman