2011-08-16 7 views
1

나는 2 시간 동안이 작업을했지만 결국은 포기했다.

나는이 조건을 가지고 :

1. 사용자 요청 PHP 파일 리디렉션 경우 CMS/index.php를 요청 = $ (1)
2. PHP에서 다른 사용자의 요청 뭔가 (PNG, CSS, JPG)이 CMS를 리디렉션하는 경우/웹 사이트/$ 1

첫 번째 규칙은 작동하지만 두 번째 규칙을 적용 할 수 없습니다. 사용자가 /cms/style.css를 요청하면 Apache는 cms/website/style.css를 리디렉션하고 cms/website/website/style.css를 다시 리디렉션하고 루프를 반복합니다.htaccess redirect (루핑) 문제

내 htaccess로 파일은 해당 같다 :

Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule (.*\.php) /cms/index.php?request=$1 [L] 
RewriteRule (.*\.!(php)) /cms/website/$1 [R,L] 

참고 : 나는 마지막 정규식이 참인지 아닌지 모르겠어요. 그리고 그것은 500의 error_log 출력이 그것을 확인하기 위해 하드 그래서

"[Tue Aug 16 16:26:11 2011] [error] [client 127.0.0.1] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace." 
+0

아파치 로그 시행 착오를 많이있는 것입니다 반환하지만 그 두 번째 규칙은 무한 보인다 - 일치하는 경우. 모든 규칙은 리디렉션 ('[R]') 후에 다시 실행되어'/ cms/website/$ 1'가 규칙과 다시 일치하게되고'/ cms/website/cms/website/$ 1' 등으로 다시 전달됩니다. –

+0

@robin, 실제로 [RewriteLooping] (http://wiki.apache.org/httpd/RewriteLooping)은 [R]을 사용하면 반복해서는 안된다고 말합니다. 그러나이 옵션을 설정하더라도 루프됩니다. 덕분에 –

답변

1
Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !(.*)\.php$ 
RewriteRule (.*)\.(.*)$ /cms/website/$1 [R,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} (.*)\.php$ 
RewriteRule (.*)\.php /cms/index.php?request=$1 [L] 
+0

! 그것은 작동하지만 문제가 무엇인지 이해할 수 없었습니다. [R, L]이 내 옛 htaccess에서 왜 작동하지 않는지 아십니까? –

+0

@burak emre 아니, 내 문제도 [L] 플래그 사용 중! – undone