2011-04-13 5 views
8

일부 도메인을 exluce이htaccess로는 :한다 RewriteCond

RewriteBase/
RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC] 
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301] 

내 문제는 지금은이 있다는 것입니다 내 htaccess로 코드 때문에 사용자 입력하면 바로 domain.com이 www.domain.com로 리디렉션 될 것이다 동일한 도메인 경로를 가리키는 새 도메인 새 도메인조차도 domain.com에 "투명하게"리디렉션됩니다 ...

어떻게 그 규칙에서 일부 도메인 이름을 제외시킬 수 있습니까?

감사합니다.

답변

8

재 작성을 시도하여 www으로 시작하지 않는 요청은 모두 리디렉션되지만 올바른/요청 된 도메인에 적용됩니다.

RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC] 
RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301] 

또는 대신 도메인이 domain.com로 시작하는 경우를 확인할 수 있습니다

RewriteCond %{HTTP_HOST} ^domain\.com$ [NC] 
RewriteRule ^(.*)$ http://www.domain.com [L,R=301] 

는 희망이 도움이됩니다.

+1

대단한 답변을 보내 주셔서 감사합니다. 코드 부분을 부분별로 설명 할 수 있습니까? 그냥 첫 번째 코드. – Hamidreza

+0

좋은 답변입니다. 구문을 자세히 설명하면 이것이 확실한 답이 될 것입니다. 그냥 말해. :) –

+0

OP는 여러 도메인을 동일한 경로로 리디렉션하려고했지만 원래 'RewriteCond'는 특히 단일 도메인 (예 : www.domain.com)을 찾고있었습니다. 첫 번째 예제는'www.'로 시작하지 않는 도메인을 요청 된 경로 앞에 리디렉션합니다.'www.'가 앞에 붙습니다. 'RewriteRule'은'RewriteCond'에서 정규 표현식의 첫 번째 그룹을 사용하여 이것을 수행합니다. 이것은'% 1'이 성취하는 것입니다. '$'는'RewriteRule' 표현식의 그룹을 참조하는데 사용되는 반면'%'는'RewriteCond' 그룹을 참조하는 데 사용됩니다. 희망을 명확하게합니다. – clmarquart