2010-07-18 6 views
2

을 무시하는 것 같다 : 옵션 + FollowSymLinks를htaccess로 내가 가진이는 htaccess로입니다한다 RewriteCond

RewriteEngine on 
RewriteCond %{REQUEST_URI} !^/pages 
RewriteRule ^(.+)/$ /$1 [NC] 
RewriteRule ^$ /pages/index.php [NC] 
RewriteRule ^([a-z]+)\?([^/]+)$ /pages/$1.php?$2 [NC] 
RewriteRule ^([a-z]+)/([^/]+)$ /pages/$1.php?q=$2 [NC] 
RewriteRule ^([a-z]+)$ /pages/$1.php [NC] 
ErrorDocument 404 /pages/404.php 

어떻게해야입니다 것은 매우 간단합니다 : URL에서

  • 제거 후행 슬래시
  • example.com/tomato에서 example.com/pages/tomato.php로 직접
  • example.com/tomato?c=red & size = big to example.com/pages/ ?

하지만이 문제입니다 example.com/pages/tomato.php?q=r하는 tomato.php C = 빨간색 & 크기 = 큰

  • 직접 example.com/tomato/red : 어떤 URL for /pages/tomato.php는 무한 루프를 생성하는 .htaccess 라인 7과 일치합니다. 그 이유는/페이지에 대한 예외를 추가했지만 무시됩니다 - 나는이 로그 메시지와 함께 500 내부 서버 오류가 발생합니다.

    mod_rewrite : 최대 내부 리디렉션 수에 도달했습니다. 구성 오류가 있다고 가정합니다. 필요한 경우 'RewriteOptions MaxRedirects'를 사용하여 제한을 늘리십시오.

    이것은 내가 가상 호스트로 실행한다는 사실과 관련이 있습니까? 그렇다면이를 해결하기 위해 무엇을해야합니까?

  • 답변

    4

    RewriteCond는 다음 RewriteRule에만 적용되므로 모든 규칙에 대해 해당 조건을 복사해야합니다.

    +0

    감사합니다, 다시 다시 복사하지 않고 다음의 모든 규칙을 적용 할 수 있도록하는 방법은 무엇입니까? – jorenl

    0

    당신은 다른 규칙의 앞에 휴식 규칙을 사용할 수 있습니다

    RewriteRule ^pages/ - [L] 
    
    +0

    감사합니다. 이 경우, RewriteCond를 하나의 다른 RewriteRule에만 추가하는 것만으로도 충분했지만, 나는 이것을 확실히 기억할 것입니다. – jorenl