2011-12-24 7 views
0

몇 가지 간단한 규칙이 포함 된 작은 htaccess 파일이 있습니다.리디렉션이 올바르게 작동하지 않습니다.

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^(www|serv)\.(.*\-.*)\.com [NC] 
RewriteRule ^(.*) http://www.maindomain.com%{REQUEST_URI} [L,R=301] 

을 나는 URI에서 폴더 SERV을 제거 할 두 번째 단계 :
먼저 내가 리디렉션 또는 메인 도메인의 시작에서 www가을 추가 할 수 있습니다.
나는 다음과 같은 한 폴더 구조 :

www.maindomain.com

  • SERV/

나는 다음과 같은 규칙을 가지고 할 수있는 주요 웹 페이지의

  • 내용 :

    RewriteCond %{HTTP_HOST} ^serv.* [NC] 
    RewriteCond %{REQUEST_URI} !^/serv.* [NC] 
    RewriteRule ^(.*) /serv/$1 [L,QSA] 
    

    이 지금까지 작동하지만, 내 자신의 재 위의 조건과 규칙 규칙 충돌을 쓰기 :

    RewriteEngine On 
    RewriteBase/
    RewriteRule ^search/$ search.php [L,QSA] 
    

    그래서 내 URI가 가끔 www.maindomain.de/search/search 같은 것을 얻는다.

    RewriteEngine On 
    RewriteCond %{HTTP_HOST} !^(www|serv)\.(.*\-.*)\.com [NC] 
    RewriteRule ^(.*) http://www.maindomain.com%{REQUEST_URI} [L,R=301] 
    
    RewriteCond %{HTTP_HOST} ^serv.* [NC] 
    RewriteCond %{REQUEST_URI} !^/serv.* [NC] 
    RewriteRule ^(.*) /serv/$1 [L,QSA] 
    
    RewriteEngine On 
    RewriteBase/
    RewriteRule ^search/$ search.php [L,QSA] 
    

    어떤 문제가 : 여기

    내 전체 htaccess로 파일입니다? 나는 실수를 찾지 못한다. 하위 도메인이 SERV하지 않고 URI가 하위 도메인이 WWW로 리디렉션됩니다 SERV을 포함하지 않는 경우

    는 또한 나는 가능한 경우 알고 싶어요.

  • 답변

    1

    하위 도메인이 SERV하지 않고 URI가 하위 도메인이 질문의 마지막 부분을 들어 www가

    로 리디렉션됩니다 SERV를 포함하지 않는 경우는, 가능한 경우는 추가

    #if the subdomain is not serv 
    RewriteCond %{HTTP_HOST} !^serv\.[^\.]+\.de$ [NC] 
    #and the uri does not contain serv 
    RewriteCond %{REQUEST_URI} !^.*serv.*$ [NC] 
    #redirect to www 
    RewriteRule .* http://www.maindomain.de%{REQUEST_URI} [NC,L,R=301] 
    

    을 편집 htaccess로 파일에 다음 내가 % 당신이 실제 호스트에 맞게 변경할 수 있습니다 위 호스트, 1 참조를 대체했다. 질문의 첫 번째 부분에 대한

    , 규칙은 다음과 WWW로 시작하지 않는 모든 호스트와 일치합니다. 또는 serv. 도메인에 대시가 없습니다. 즉, '-'이 없기 때문에 www.maindomain.com과 일치합니다.

    RewriteCond %{HTTP_HOST} !^(www|serv)\.(.*\-.*)\.com [NC] 
    

    이렇게하면 관찰 한대로 무한 리디렉션이됩니다.그 다음

    #if host is NOT www.anything.com or serv.anything.com 
    RewriteCond %{HTTP_HOST} !^(www|serv)\.[^\.]+\.com$ [NC] 
    #redirect to www.maindomain.com 
    RewriteRule .* http://www.maindomain.com%{REQUEST_URI} [L,R=301] 
    
    +0

    귀하의 RewriteRule의로 변경

    수정에 작동하지 않을 것 같다. 참조 % 1은 (는) 해결되지 않습니다. 메인 도메인을 직접 호출하면 리디렉션이 너무 많다는 오류가 발생합니다. – CSchulz

    +0

    다시 시도하고 www. 결과는 무한 루프가됩니다. http : //wiki.../NotTheWikiFolder에서 리디렉션됩니다. – CSchulz

    +0

    죄송합니다 - 오타가 있었으며 위에 고정되어있는 ['^ \.] 기간을 빠뜨리는 것을 잊었습니다. –

    관련 문제