2011-01-14 4 views
1

내 로컬 dev 컴퓨터에서 새 ReWrite 규칙을 구현하려고합니다. 나는 이미 13 개의 규칙을 세웠고 모든 것이 잘 작동한다. 그러나, 어떤 이유로 최신 하나는 내게 500 내부 서버 오류 던지고있다.너무 많은 내부 리디렉션에 대해 Apache ReWriteEngine이 500 내부 서버 오류를 발생시키는 이유는 무엇입니까?

의 재 작성 규칙은 다음과 같습니다

RewriteRule stuff/public_html/vault/mystuff/view/(.*) /stuff/public_html/vault/mystuff/view/index.php?stuff=$1 

RewriteRule stuff/public_html/vault/mystuff/view/(.*)/ /stuff/public_html/vault/mystuff/view/index.php?stuff=$1 

내 아파치 로그를 검사하고이 있어요? 스크립트에

[Thu Jan 13 22:07:43 2011] [error] [client ::1] mod_rewrite: maximum number of internal redirects reached. Assuming configuration error. Use 'RewriteOptions MaxRedirects' to increase the limit if neccessary., referer: http://localhost:8888/stuff/public_html/vault/mystuff/all/index.php?curr=7 

내가/index.php에 물건 = $ 1을 (를) 볼 수 리디렉션하려고를, 어떠한 종류의 리디렉션과도 원격으로 유사합니다. 나는 다음과 같다 착륙 스크립트의 상단에 호출되는 아주, 아주 기본적인 세션 검증을해야합니까 :

//Start session 
session_start(); 

//Check whether the session variable SESS_MEMBER_ID is present or not 
if(!isset($_SESSION['SESS_MEMBER_ID']) || (trim($_SESSION['SESS_MEMBER_ID']) == '')) { 
    header("location: ".$root_http.""); 
    exit(); 
} 

을하지만 내가 직접 페이지에 액세스 할 때, 그것은 예상대로 역할을하고있다 리디렉션 없음. 다른 모든 ReWrite 규칙과 해당 방문 페이지는 동일한 방식으로 설정됩니다.

이것은 내 마음을 불고 있습니다. 어떤 도움, 제발!? 마크 BI에서 제안에

이 RewriteLog 켜져,이 함께했다 :

: 1 - - [13/월/2011 : 23 : 00 : 09 --0500] [로컬 호스트/SID # 807df8 ]/물건/public_html/금고/자료/공공 _html/볼트/mystuff /보기/index.php -> 물건을 다시 작성/[시작/redir # 10] (2) mystuff/view/index.php? stuff = index.php

:: 1 - - [2011/23 : 00 : 09 - 0500] [localhost/sid # 807df8] [rid # 941b38/initial/redir # 10] (3) split uri =/stuff/public_html/vault/mystuff/view/index.php? stuff = index.php -> uri =/stuff/public_html/vault/mystuff/view/index.php , args = stuff = index.php

:: 1 - [13/1/2011 : 23 : 00 : 09 - 0500] [localhost/sid # 807df8] [rid # 941b38/초기/redir # 10] (3) [dir/사용자/stepheng/개발 /] 패턴 'stuff/public_html/vault/mystuff/view /(/./)/'uri에 적용 /stuff/public_html/vault/mystuff/view/index.php '

:: [localhost/sid # 807df8] [rid # 941b38/initial/redir # 10] (1) [dir/Users/stepheng/개발 당] [1/- [2011 년 1 월 13 일 : 23 : 00 : 09 - /] 내부 리다이렉트 /stuff/public_html/vault/mystuff/view/index.php [INTERNAL REDIRECT]

인수를 보내려고하는 것 같습니다. stuff = index.php,하지만 어떻게 보이지 않습니다. 가능합니다. 어떤 아이디어? 재 작성 로그에

답변

2

그렇지 않습니다. 규칙이 대상과 일치합니까? 그것은 반복 될 것입니다. 당신은 마지막에 정지 처리 재 작성 규칙을 말하는 플래그를 추가해야

RewriteRule stuff/public_html/vault/mystuff/view/(.*)/ /stuff/public_html/vault/mystuff/view/index.php?stuff=$1 [L]

+1

당신 말이 맞아, 나는 그 통지를하지 않았다 시스템이 기존 파일이나 디렉토리를 일치하는 경우 리디렉션이 중지, 그래서 당신은 단지 한 번 리디렉션해야 -

한편,이 시도. 나는 대상의 이름을 index2.php로 변경하고, .htaccess를 업데이트하고, 서버를 다시 시작했으며 여전히 120120을 던지고 있습니다. 여전히 일치하기 때문에 –

+0

입니다. [L]을 추가 했습니까? 또는 mystuff/view/ –

+0

@stephen의 인덱스를 외부로 이동하십시오. - Marc B의 답변에서 다시 작성 로그는 무엇을 보여줍니까? – jmort253

5

를 켜십시오 : 당신의 httpd.conf에서

RewriteLog /path/to/rewritelog.file 
RewriteLogLevel 9 

. 기본적으로 다시 쓰기 엔진이 수행하는 모든 작업을 기록하므로 URL이 시스템을 통해 얻은 정확한 경로를 볼 수 있으며 무한 루프로 보이는 이유는 무엇일까요?

0

내가이 경로를 갖는 요청에 대한 확실하지 않다 : /stuff/public_html/vault/mystuff/view - 어디 문서 루트 점을 수행에?

전체 아파치를 게시 할 수 있습니까?

RewriteEngine on 

RewriteCond %{REQUEST_URI} !-f 
RewriteCond %{REQUEST_URI} !-d 
RewriteRule stuff/public_html/vault/mystuff/view/(.*)/ /stuff/public_html/vault/mystuff/view/index.php?stuff=$1 [QSA,L] 
+0

에 있습니다. Thanks Horus. 하드 URL (index.php? stuff = ...)이 실제로 내 부드러운 URL (/ view/* /)과 일치하고 이동했음을 알게 된 후 모든 것이 작동하기 시작했습니다. 감사합니다! –

관련 문제