2009-06-15 2 views
1

어쩌면 나는 뭔가를 놓치고있다. 그러나 나는 이것을 알아낼 수 없다.

은 내가 RewriteRule의이 :

RewriteRule ^view/(\w+)$ view.php?mmdid=$1 [L] 

을 내가 mydomain.org/view/3로 이동하면, $ _GET 배열이 비어 있습니다. 'mmdid'키가 없습니다.

그러나, 나는 같은 뭔가 다른, 내 규칙을 변경할 때 : 나는 mydomain.org/viewz/3를 방문 할 때

RewriteRule ^viewz/(\w+)$ view.php?mmdid=$1 [L] 

그것을 잘 작동합니다. $ _GET을 출력 할 때 Array ([mmdid] => 1)를 얻습니다.

충돌 할 수있는 다른 규칙은 없으며 아파치를 재부팅했습니다.

왜 이런 일이 발생했는지에 대한 아이디어가 있습니까? '보기'가 키워드입니까? 다만^V/(\ + w) $ ....

192.168.204.187 - - [15/Jun/2009:13:10:09 --0400] [mydomain.org/sid#2787ab8][rid#2a63038/initial] (3) [perdir /path/to/webroot/] add path info postfix: /path/to/webroot/v -> /path/to/webroot/v/1 
192.168.204.187 - - [15/Jun/2009:13:10:09 --0400] [mydomain.org/sid#2787ab8][rid#2a63038/initial] (3) [perdir /path/to/webroot/] strip per-dir prefix: /path/to/webroot/v/1 -> v/1 
192.168.204.187 - - [15/Jun/2009:13:10:09 --0400] [mydomain.org/sid#2787ab8][rid#2a63038/initial] (3) [perdir /path/to/webroot/] applying pattern '^v/([0-9]+)$' to uri 'v/1' 
192.168.204.187 - - [15/Jun/2009:13:10:09 --0400] [mydomain.org/sid#2787ab8][rid#2a63038/initial] (2) [perdir /path/to/webroot/] rewrite 'v/1' -> 'view.php?mmdid=1' 
192.168.204.187 - - [15/Jun/2009:13:10:09 --0400] [mydomain.org/sid#2787ab8][rid#2a63038/initial] (3) split uri=view.php?mmdid=1 -> uri=view.php, args=mmdid=1 
192.168.204.187 - - [15/Jun/2009:13:10:09 --0400] [mydomain.org/sid#2787ab8][rid#2a63038/initial] (3) [perdir /path/to/webroot/] add per-dir prefix: view.php -> /path/to/webroot/view.php 
192.168.204.187 - - [15/Jun/2009:13:10:09 --0400] [mydomain.org/sid#2787ab8][rid#2a63038/initial] (2) [perdir /path/to/webroot/] strip document_root prefix: /path/to/webroot/view.php -> /view.php 
192.168.204.187 - - [15/Jun/2009:13:10:09 --0400] [mydomain.org/sid#2787ab8][rid#2a63038/initial] (1) [perdir /path/to/webroot/] internal redirect with /view.php [INTERNAL REDIRECT] 
192.168.204.187 - - [15/Jun/2009:13:10:09 --0400] [mydomain.org/sid#2787ab8][rid#2a5ebc0/initial/redir#1] (3) [perdir /path/to/webroot/] strip per-dir prefix: /path/to/webroot/view.php -> view.php 
192.168.204.187 - - [15/Jun/2009:13:10:09 --0400] [mydomain.org/sid#2787ab8][rid#2a5ebc0/initial/redir#1] (3) [perdir /path/to/webroot/] applying pattern '^v/([0-9]+)$' to uri 'view.php' 
192.168.204.187 - - [15/Jun/2009:13:10:09 --0400] [mydomain.org/sid#2787ab8][rid#2a5ebc0/initial/redir#1] (3) [perdir /path/to/webroot/] strip per-dir prefix: /path/to/webroot/view.php -> view.php 
192.168.204.187 - - [15/Jun/2009:13:10:09 --0400] [mydomain.org/sid#2787ab8][rid#2a5ebc0/initial/redir#1] (3) [perdir /path/to/webroot/] applying pattern '^(.*)$' to uri 'view.php' 
192.168.204.187 - - [15/Jun/2009:13:10:09 --0400] [mydomain.org/sid#2787ab8][rid#2a5ebc0/initial/redir#1] (4) [perdir /path/to/webroot/] RewriteCond: input='mydomain.org' pattern='^www\.mydomain\.org$' => not-matched 
192.168.204.187 - - [15/Jun/2009:13:10:09 --0400] [mydomain.org/sid#2787ab8][rid#2a5ebc0/initial/redir#1] (1) [perdir /path/to/webroot/] pass through /path/to/webroot/view.php 

감사 사용시 로그의 출력 여기서

192.168.204.187 - - [15/Jun/2009:13:01:19 --0400] [mydomain.org/sid#2787ab8][rid#2a61030/subreq] (1) [perdir /path/to/webroot/] pass through /path/to/webroot/view.php 
192.168.204.187 - - [15/Jun/2009:13:01:19 --0400] [mydomain.org/sid#2787ab8][rid#2a54000/initial] (3) [perdir /path/to/webroot/] add path info postfix: /path/to/webroot/view.php -> /path/to/webroot/view.php/1 
192.168.204.187 - - [15/Jun/2009:13:01:19 --0400] [mydomain.org/sid#2787ab8][rid#2a54000/initial] (3) [perdir /path/to/webroot/] strip per-dir prefix: /path/to/webroot/view.php/1 -> view.php/1 
192.168.204.187 - - [15/Jun/2009:13:01:19 --0400] [mydomain.org/sid#2787ab8][rid#2a54000/initial] (3) [perdir /path/to/webroot/] applying pattern '^(.*)$' to uri 'view.php/1' 
192.168.204.187 - - [15/Jun/2009:13:01:19 --0400] [mydomain.org/sid#2787ab8][rid#2a54000/initial] (4) [perdir /path/to/webroot/] RewriteCond: input='mydomain.org' pattern='^www\.mydomain\.org$' => not-matched 
192.168.204.187 - - [15/Jun/2009:13:01:19 --0400] [mydomain.org/sid#2787ab8][rid#2a54000/initial] (1) [perdir /path/to/webroot/] pass through /path/to/webroot/view.php 
192.168.204.187 - - [15/Jun/2009:13:01:19 --0400] [mydomain.org/sid#2787ab8][rid#2930e58/subreq] (1) [perdir /path/to/webroot/] pass through /path/to/webroot/1 

된다 : 여기

다시 쓰기 로그의 내용 인 너,

답변

2

아마도 스크립트 이름이 다시 쓰기와 충돌합니다. 스크립트를 view.page.php로 이름을 바꿔보십시오. 다시 작성하는 경우 스크립트가 호출되는 것과 아무런 차이가 없습니다. 스크립트가 사용

var_dump($_SERVER); 
+0

이것은 그것을했다! 고맙습니다.didnt는 그것을 생각한다조차. 스크립트의 이름을 규칙의 이름으로 지정할 수없는 이유는 무엇입니까? 누구든지이 문제에 대해 밝힐 수 있습니까? – barfoon

+0

Webroot에서 일을보다 체계적으로 관리하기 때문에 일부 변경 사항이있을 수 있습니다. – barfoon

+1

파일 이름 바꾸기는 원인을 제거하는 것보다 증상을 제거하는 것입니다. 그리고 그것은 좋은 해결책이 아닙니다. – Gumbo

1

'보기'는 어떤 식 으로든 키워드 또는 예약어가 아닙니다. 재 작성 로그에 조심스럽게 찾고

(솔루션에 우리를 이끌어 삭제 된 디버깅 정보)

나는이 줄을 참조하십시오

applying pattern '^(.*)$' to uri 'view.php/1' 

그 라인은 당신이 사용할 수 MultiViews을 보여줍니다 (요청이 없기 때문에 view.php/1이지만 view/1), 같은 이름과 알려진 확장자를 가진 파일이 있기 때문에 view/get은 내부적으로 view.php로 변환됩니다. 해당 파일 또는 디렉토리에 대해 MultiViews를 비활성화하거나 스크립트 또는 디렉토리 이름을 변경하여 MultiView가 트리거되지 않도록 할 수 있습니다.

+0

로그 @ 레벨 9의 출력을 게시하고 다른 규칙을 지우고 페이지를 한 번 요청했습니다. – barfoon

+0

예, 아래의 2 가지 규칙에 따라 www : RewriteCond % {HTTP_HOST}^www \ .mydomain \ .org $ RewriteRule^(. *) $ http://mydomain.org/$1 [R = 301, L] – barfoon

1

그것은 아마도이 문제를 일으키는 MultiViews의 호출되는 방법에 대한 자세한 내용은

. 사용 중지하려고 시도하십시오.

Options -MultiViews 
0

Vinko에서 RewriteCond 문제가 발생했습니다. "보기"다시 쓰기 규칙은 충족되지 않는 조건이 있으므로 결코 테스트하지 않습니다.