2012-12-11 2 views
0

이전에 나는 약간의 복잡한 .htaccess 파일로 큰 도움을 받았습니다.다중 사이트 강제 www. 모든 하위 도메인에 htaccess snippet

다중 사이트/도메인 파일이며 %{HTTP_HOST}을 사용하여 wwww 이외의 URL을 www.widgets.com 주소로 다시 쓰거나/301

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

문제는 RegexFu가 NOT www를 찾습니다. 그런 다음 www를 추가합니다.

누군가가 mail.widgets.com이라는 말을 링크하면 www.mail.widgets.com으로 리디렉션되므로 콘텐츠가 중복 될 수 있습니다.

이 요약 :

내가이 필요합니다

mail.widgets.com -> www.widgets.com 
dogs.widgets.com -> www.widgets.com 
www.mail.widgets.com -> www.widgets.com 
www.dogs.widgets.com -> www.widgets.com 

내가 순열의 다양한 시도

없이 운이 liek 없습니다 :

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

없음 주사위입니다. 나는 루프 나 다른 문제로 끝난다.

내가 아닌 단순히 아무것도 필요 :

www. (anything but period)  .com - > www. (last string before .com)   .com 

거친 표준 :

(anything but period).com -> www. (anything but period).com 

누군가가 나에게 내가 대단히 감사하겠습니다 손을 빌려 수 있다면.

답변

2

보십시오 : 이전 재 작성 조건에 ([^.]+) 일치

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

%1 역 참조 그룹화. 도메인 이름 앞에 하위 도메인이 있으면 무시합니다.

+0

클로저. 나는 그것이 작동 할 것이라고 생각했다 :) www.person.widgets.com은 www.widgets.com에 재 작성하지 않는다 : (나는!^www \. 조건 때문에 그런 것 같아. person.widgets.com 그러나 www.widgets.com에 지금 재 작성하십시오 .... –

+0

@SamanthaP www가 시작되지만 하나 이상의 3 레벨 도메인 이름이있는 경우에 대비하여 추가 OR 조건이 추가되었습니다 –

+0

이상한 첫 번째 줄로 보입니다 작동 : RewriteCond % {HTTP_HOST}!^www \. ([^.] +) \ .com $ [NC] –

관련 문제