
나는 오늘 튜브 주위를 사냥했지만 제한된 mod_rewrite 및 정규식 지식으로 인해 어려움을 겪고 있습니다.
내가 달성하려는 것은 domain1(하위 도메인 포함)을 domain2(하위 도메인 포함)로 다시 작성하고 301로 구현하는 것입니다. 도메인 2는 기본 도메인이고 도메인 1은 (당분간) 함께 설정됩니다. 단지 '그렇기 때문에' 거기에 있습니다(더 나은 사용이 보류 중입니다. 그 동안 뭔가를 배우는 데 사용할 것이라고 생각했습니다).
도메인 2는 와일드카드로 구성되며 하위 도메인 -> 하위 폴더 내부 재작성을 통해 표시되는 마이크로사이트를 호스팅합니다. (요청 시 이에 대한 코드를 기꺼이 게시할 것입니다. 까다롭지는 않지만 이상한 이유로 무한 재작성 없이 작동하도록 하는 데 시간이 걸렸습니다.) 도메인 1(임시 도메인)은 전혀 설정되지 않았지만 여러 옵션(DirectAdmin이 구현한 '별칭' 또는 '포인터' 또는 별도의 도메인으로 추가되고 와일드카드로 구성됨)이 있기 때문입니다. 누군가 도메인 1(전달 도메인)로 이동하면 다음과 같은 일이 발생합니다.
http://sub.domain1.tld -> http://sub.domain2.tld
http://sub.domain1.tld/content.php -> http://sub.domain2.tld/content.php
http://domain1.tld -> http://domain2.tld
http://domain2.tld
나를 괴롭히는 점은 웹에서 쉽게 사용할 수 있는 모든 솔루션이 하위 도메인을 디렉토리에 매핑하고 http://domain1.tld/
. .co.uk를 .com으로 리디렉션하기 위한 내 기존 htaccess 중 하나에는 내가 가고 싶은 곳의 시작 부분이 있습니다.
RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.foo\.com [NC]
RewriteRule ^(.*)$ http://foo.co.uk/$1 [R=301,L]
나는 그것이 패턴 $1
과 일치하는 도메인 뒤의 모든 것을 나타내며 하위 도메인이 될 것이라는 것을 이해합니다. (따라서 http_referer에 존재한다면 "www."가 될 것이라고 가정합니다. 그렇지 않으면 null이 될까요?)^(.*)$
%2
%1
...하지만 여기서 막히네요. 모든 변수를 새 도메인 이름으로 전달하고 그 과정에서 하위 도메인을 잃지 않도록 다시 작성하는 가장 깔끔한 방법은 무엇입니까?
답변1
그럴 이유가 있나요?리디렉션domain1의 구성에서는 작동하지 않습니다.
Redirect permanent / http://domain2.com/
Redirect
동일한 디렉토리 구조를 유지하면서 LHS 아래의 모든 것을 RHS로 리디렉션합니다.
또는 훨씬 더 간단한 해결책은 ServerAlias domain2
domain1에 대한 구성을 추가하는 것입니다. 이렇게 하면 리디렉션을 보내지 않고 서버가 domain1과 동일한 방식으로 domain2에 대한 요청에 응답하게 됩니다.
답변2
(테스트되지 않은) 내용을 따라 시도해보십시오.
RewriteMatch 301 http://(.*)domain1.com(.*) http://$1domain2.com$2
답변3
나는 당신이 다음과 같은 것을 원한다고 생각합니다 :
RewriteCond %{HTTP_HOST} ^((www\.)?[^\.]+)\.foo\.com [NC]
RewriteRule ^(.*)$ http://%1.foo.co.uk/$1 [R=301,L]
그러면 %1(있는 경우 www를 포함하여 foo.com의 하위 도메인 부분)이 유지되고 RewriteRule
. mod_rewrite
에서 이를 맹글링하는 동안 이것들은 문자열일 뿐이므로 무엇이든 할 수 있다는 점을 명심하세요 .
선택적 www 부분이 문제를 일으키는 경우 이를 두 개의 RewriteCond
명령문으로 분할하세요.
RewriteCond %{HTTP_HOST} ^(www\.[^\.]+)\.foo\.com [NC] [OR]
RewriteCond %{HTTP_HOST} ^([^\.]+)\.foo\.com [NC]
RewriteRule ^(.*)$ http://%1.foo.co.uk/$1 [R=301,L]