2012-09-18 3 views
0

현재 내 웹 사이트의/sub/폴더에있는 .htaccess 파일에서 두 가지 다시 쓰기 규칙을 사용하려고합니다. 하나는 URL 끝에있는 index.php, index.html 등을 제거하는 리디렉션입니다. /sub/index.php ->/sub/:.htaccess를 사용하여 index. *를 리디렉션하고 URL을 쿼리 문자열로 다시 작성하십시오.

RewriteCond %{REQUEST_URI} ^(.*)/index\.[^\.]+$ 
RewriteRule index.* %1/ [r=301,L] 

다른 하나는 검색어 문자열을 얻기 위해 php의 URL을 다시 작성하는 것입니다./서브/테스트 - 테스트 -> /sub/index.php?field=testing-testing :

RewriteRule ^(.*)$ index.php?command_name=$1 [L,QSA] 

다음은 스스로 문제없이 제대로 작동하지만 난 단지 그들을 얻을 방법을 알아낼 수 없습니다 함께 일하기.

첫 번째 규칙이 "index (...)"와 일치하기 때문에 두 번째 규칙이 어떻게 잘못 될지 알 수 있습니다. 그래서 다른 변형을 시도했지만 끝없는 리디렉션 루프 또는 웹 사이트의 루트로 다시 리디렉션됩니다.

답변

0

index.php을 제거 할 때 실제 요청과 일치해야하며 URI가 일치해야합니다. 2 개의 규칙이 함께 작동하지 않는 이유는 mod_rewrite가 URI가 변경되지 않을 때까지 모든 규칙을 반복하여 유지하기 때문입니다. 제 2 규칙은 index.php에 URI를 재 작성하는 첫 번째 규칙은 그럼 당신은 그대로 두 번째 규칙을 떠날 수있을 것 등

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)index\.(php|html?) 
RewriteRule^/%1 [R=301,L] 

그것을 일치하고, 다음 2 규칙이 다시 재 작성 제거합니다.

+0

감사합니다. – 2sh

관련 문제