2010-06-03 6 views
3

에 하위 도메인을 리디렉션하는 방법 :내가 htaccess로 모드 - 재 작성으로 달성하기 위해 노력하고있어 다른 도메인

리디렉션을 재 작성 규칙 w 새 도메인 이름에 대한 모든 하위 도메인을.

예컨대

test1.olddomain.com ===> test1.newdomain.com

test2.olddomain.com ===> test2.newdomain.com

test3.olddomain.com ===> test3.newdomain.com 이것은 내가 지금까지 물론 잘못이다이 무엇

:

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

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

RewriteRule [a-zA-Z]+\.olddomain.com$ http://$1.newdomain.com/ [R=301,L] 

아직 정규 표현식 중독자가 아니기 때문에, 도움이 필요합니다. 도움을 주셔서 감사합니다. 나는 또한이 처음 두 조건을 하나로 모을 수 있음을 안다.

참고 : DNS를 사용하여 모든 도메인을 리디렉션하지 않는 이유는 많은 디렉토리가 SEO에서 위치를 유지하기 위해 특별한 다시 쓰기 규칙을 필요로하기 때문입니다.

답변

3

.htaccess 파일에서 RewriteRules와 일치하는 "URL"은 도메인 이름과 현재 디렉토리로 연결된 모든 디렉토리를 제거했습니다. (.htaccess 파일에서 사용 mod_rewrite를 엄청난 고통이다, 당신은 서버의 conf에 액세스 할 수있는 경우 대신이 그것을 할!)

그래서, 당신의 htaccess로 당신의 DocumentRoot에 있다고 가정하고, 이런 식으로 뭔가를 시도 :

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^(.*)olddomain\.com$ [NC] 
RewriteRule ^(.*)$ http://%1newdomain.com/$1 [R=301,L] 

% 1은 (는) RewriteCond의 첫 번째 그룹과 일치하고 $ 1은 (는) URL 부분과 일치해야합니다.

+0

감사합니다. 완벽하게 작동했습니다. – Codex73

+0

나는 mod_rewrite를 테스트하지 않고 처음 시도 할 때 처음으로 충격을 받았다. – Artelius

0
RewriteRule ^(.+)\.olddomain\.com$ http://$1.newdomain.com/ [R=301,L] 

정규식 엔진에 시작하는 줄과 일치하도록 처음에 ^를 지정해야합니다. 다음으로, ".olddomain.com"앞에있는 것을 모두 일치시킨 다음 첫 번째로 일치하는 패턴에 할당합니다 (나중에 $ 1에서 액세스 할 수 있습니다). 일치 항목을 $ 1에 할당하려면 괄호 (. +)로 묶어야합니다.

관련 문제