2016-08-14 2 views
4

내 웹 사이트에서 내 포럼을 하위 디렉토리에서 하위 도메인으로 이동하는 데 관심이 있습니다. 포럼은 현재 example.com/forums에 있으며 forums.example.com으로 옮기고 싶습니다. 이동 후에 htaccess를 사용하여 모든 포럼 트래픽을 하위 도메인으로 리디렉션하려고하지만 문제는 내가 내 사이트에 대해 .com 도메인과 .net 도메인의 두 TLD가 있다는 것입니다.htaccess TLD를 기반으로 한 URL 다시 작성

나는 현재이를 사용하여 트래픽을 리디렉션하려고 :

RewriteCond %{HTTP_HOST} !=forums.example.net 
RewriteRule ^forums(/(.*))?$ https://forums.example.net/$2 [L,R=301] 

RewriteCond %{HTTP_HOST} !=forums.example.com 
RewriteRule ^forums(/(.*))?$ https://forums.example.com/$2 [L,R=301] 

이 절반-작동합니다. TLD를 방문한 것과 관계없이 언제든지 에서 방문하는 경우에도 forums.example.net으로 리디렉션됩니다.이 경우 forums.example.com으로 이동합니다. 내가 어떻게 이걸 얻을 수 있니?

답변

2

당신은 forums/.htaccess 대신 최고 수준의 .htaccess의그을음 규칙 매우 첫 번째 규칙 사용할 수 있습니다 첫 번째 규칙으로이 규칙을 사용 htaccess로 루트를 들어

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^(?:www\.)?(example\.(?:com|net))$ [NC] 
RewriteRule ^.*$ http://forums.%1/$0 [L,R=301,NE] 

:

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^(?:www\.)?(example\.(?:com|net))$ [NC] 
RewriteRule ^forums(/.*)?$ http://forums.%1$1 [NC,L,R=301,NE] 
+0

알겠습니다. 고마워요! 어쨌든 루트 htaccess 파일을 사용할 수 있습니까? 나는 그것을 피할 수 있다면 디렉토리가 실제로 존재할 필요가 없도록하고 싶습니다. – DavidB

+0

현재 도로에 있으며 웹 서버에 액세스 할 수 없지만 [this htaccess tester] (http://htaccess.mwl.be/)를 사용하여 신속하게 테스트했으며 제대로 작동하는 것 같습니다. – DavidB

+1

방금 ​​라이브 서버에서 해봤지만 제대로 작동했습니다! 서브 라인 리다이렉션이 발생했을 때 슬래시가 두 개의 슬래시를 유발 했으므로 마지막 줄에서'http : // forums. % 1 $ 1'을'http : // forums. % 1 $ 1' (으)로 변경해야했습니다. 색인이 아닌 페이지. – DavidB

1

올바른 리디렉션이 원하는대로 작동하도록 아래 규칙을 사용하십시오.

Rewritengine On 
RewriteCond %{HTTP_HOST} ^example\.com$ 
RewriteRule ^forums$ http://forums.example.com/? [L,R=301] 
RewriteCond %{HTTP_HOST} ^example\.net$ 
RewriteRule ^forums$ http://forums.example.net/? [L,R=301] 
+0

고마워요! 그것은 작동하지만 URL이 단지'example.com/forums' 또는'example.net/forums '일 경우에만 작동합니다. 'forums '다음에 URL이 있으면 그냥 슬래시 일지라도 리디렉션이 작동하지 않습니다. – DavidB

+0

신경 쓰지 마라, 나는 그것을 이해했다고 생각한다! 'RewriteRule^forums $'의 인스턴스를'^ forum /?(.*)$'로 바꾸면 작동하게 만들 수있었습니다. – DavidB

+0

사실, 그건 두렵습니다. 나는 그것이라고 생각했다. 그러나 그것은하지 않았다. 내가 캐시하지 않은 컴퓨터에서 시도했을 때 404 오류가 발생했습니다. – DavidB