2013-07-15 3 views
1

내가 htaccess로 새로운 오전과 내가 AJAX를 통해 POST 값에 문제가 있어요 값. 나는 그것이 아마도 간단한 수정하므로 htaccess로 함께 연주를 시작하기 전에htaccess로와 AJAX POST는

다했다.

내 포스트 값은 AJAX를 통해 손실되고 있으며, 나는 htaccess로를 사용하는 접미사 (PHP)를 제거 할 수있는 URL을 다시 작성했기 때문에 그것은 생각합니다. 재 작성 조건을 추가하여 해결 된 일반 스크립트 (예 : 로그인)의 POST 값에 문제가있었습니다.

내 코드는 아래를 참조하시기 바랍니다 :

# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

## hide .php extension 
# To externally redirect /dir/foo.php to /dir/foo 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC] 
RewriteRule^%1 [R,L,NC] 

## To internally redirect /dir/foo to /dir/foo.php 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule^%{REQUEST_URI}.php [L] 

RewriteCond %{REQUEST_METHOD} !POST 
RewriteRule ^index.php/[L,R=301] 

답변

0

문제는 당신 R 태그입니다. 이로 인해 리디렉션이 발생합니다. 불행하게도 초기 웹 브라우저는 HTTP 사양을 따르지 않았고 GET을 사용하여 새로운 URL을 요청했습니다. 이로 인해 HTTP가 변경되었습니다 (예 : 308 코드 도입).

기본적으로, 당신은 안정적으로 GET 요청 이외의 외부 리디렉션을 발행 할 수 없습니다. 대신 내부 리디렉션 (다시 쓰기)을 사용하십시오. 즉 첫 번째 RewriteRule 끝에서 R 태그를 남겨 둡니다.

+0

감사 니콜라스하지만 지금은 다음과 같은 오류가 점점 오전 : [오류] [클라이언트 : 1] 요청으로 인해 가능성이 구성 오류로 (10) 내부 리디렉션의 한계를 초과했습니다. 필요한 경우 'LimitInternalRecursion'을 사용하여 제한을 늘리십시오. 역 추적을 얻으려면 'LogLevel debug'를 사용하십시오. – Jimbob

+0

그래서 무한 루프가 있습니다. 먼저'.php '확장자를 제거하고 리다이렉션을 한 다음 다시 추가하고 다른 리다이렉션을한다. .php 확장자를 추가 할 필요가 없으므로 해당 섹션을 삭제하십시오. 대신,'Options + MultiViews'를 사용하여 MultiViews를 켜면 Apache가 PHP 파일을 찾습니다. –

+0

고맙습니다. 문제가 해결되었습니다. – Jimbob