htaccess를 통해 루트와 루트 만 리디렉션하는 방법은 무엇입니까?


53

루트 만 다른 URL로 리디렉션하고 싶지만 그들이 속한 모든 / sub / directories를 유지 (및 리디렉션)하십시오.

예:

mysite.com/1이 mysite.com/admin이 페이지를 여는 곳으로 리디렉션

mysite.com/을 mysecondsite.com으로 리디렉션하고 htaccess를 사용하여 301 리디렉션으로 만 이것을 원합니다.

답변:


74

이 시도:

RewriteEngine on
RewriteCond %{HTTP_HOST} mysite\.com [NC]
RewriteCond %{REQUEST_URI} ^/$
Rewriterule ^(.*)$ http://mysecondsite.com/ [L,R=301]

기존 도메인을 확인할 필요가없는 경우 (예 : .htaccess가있는 디렉토리가 기존 도메인 만 사용하는 경우) 두 번째 줄을 제거 할 수 있습니다.


1
: 내 경우, 나는 2 선에 정규식을 추가 할 수 있도록했다 foo.mysite.com mysite.com/하지만 트래픽을 리디렉션하는 데 필요한 RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]경기가 정확한 호스트이었다 보장
jaygooby

서버 변수 를 확인하기 위해 추가 조건 을 사용하는 대신 RewriteRule 패턴 에서 URL 경로를 확인하는 것이 더 효율적 입니다 (@DaveForgac의 답변에서와 같이) . REQUEST_URI
MrWhite

38

"/"만 다른 도메인으로 리디렉션하려는 경우 다음과 같이 작동합니다.

RewriteEngine on
RewriteRule ^$ http://www.example.com/ [R=301,L]

이것은 도메인의 루트와 그 뒤에 아무 것도 일치하지 않으므로 파일 이름을 지정하지 않고 도메인 이름 만 리디렉션합니다.


약간의 변형이 나를 위해 일했습니다. htaccess의 맨 아래에 추가 된 다른 모든 규칙이 호출 된 후 (도메인이없는) 루트 도메인을 방문하는 모든 사람에게 환영 페이지를 렌더링하고 싶었습니다. RewriteCond % {HTTP_HOST}! ^ (subdomain1 | subdomain2) \. mysite \ .com $ [NC] RewriteRule ^ $ /welcome.php [NC, L]
MarsAndBack

15

이것은 잘 작동합니다 :

RedirectMatch 301 ^/$ https://example.com/

2
다른 리디렉션에 대해 mod_rewrite를 아직 사용하고 있지 않은 경우 기존 응답보다 선호됩니다.
MrWhite

-3

더 짧은 해결책 :

Redirect 301 / http://mysecondsite.com/

12
이것은 jardel이 원하는 것을하지 않을 것입니다. 루트가 아닌 모든 페이지를 리디렉션합니다.
sharoz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.