해결 : I는보기의 index.php/제어기/액션 내부 요청 http://example.com/controller/action 열고 ModRewrite 경로 수 있도록리디렉션 루프없이 index.php/컨트롤러/액션을 컨트롤러/액션으로 리디렉션하는 방법은 무엇입니까?
RewriteCond %{THE_REQUEST} index.php
RewriteRule index.php(.*)$ http://%{HTTP_HOST}$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php/$1 [L]
난 리디렉션 구성.
이제 http://example.com/index.php/controller/action을 index.php/controller/action (301 리디렉션)에 자동으로 열어서 사용자를 리디렉션하고 싶습니다. 하지만 이제는 무한 루프가 반복됩니다.
부트 스트랩 index.php로 내부 리다이렉트를 분리하여 한 사용자가 index.php 서브 패스로 URL을 열지 못하게 할 수 있습니까?
나는이 시도하지만 나던 일 (enless 루프) : PHP 측에서이 문제를 해결하기 위해RewriteCond %{REQUEST_URI} index.php/(.*)
RewriteRule ^index.php/(.*)/$ http://%{HTTP_HOST}/$1/ [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php/$1 [L]
당신은 정말 야해 그 첫 번째 조건/규칙을 다시 작성해야 ... 모두 URL은 ** 정확히 같은 일을 **해야하기 때문이다. 그들이 나쁜 구현을 가지고 있지 않다면 ;-) – prodigitalson
첫 번째 규칙은 두 번째 내부 리디렉션 (301)을 만듭니다. 그래서 그것은 동일하지 않습니다;). 사용자가 index.php로 URL을 열면 index.php가없는 버전으로 리디렉션해야합니다. 그러나 index.php가없는 버전은 내부적으로 부트 스트랩 파일 인 index.php로 리디렉션되어야하며 충돌을 의미합니다. – Mike
Opps ... 당신은 정확합니다 ... 완전히 그것을 놓쳤습니다. 그러나 새 호스트로 URL을 리다이렉트하는 것과 동일한 shceme을 사용하는 경우 동일한 작업을 수행해야합니다. 나는'/ index.php/controller/action'이 라우터가 염려해야하는 한'/ controller/action'과 실질적으로 동일하다는 것을 의미합니다. 일반적으로 마지막 규칙은 다음과 같습니다 :'RewriteRule^(. *) $ /index.php [L]'캡처 그룹이 부족하지 않습니다. – prodigitalson