2014-11-26 7 views
1

도메인의 하위 디렉토리 페이지 만 하위 도메인으로 리디렉션하려고합니다. 예를 들어, 내가 원하는 :htaccess 301 하위 도메인으로 리디렉션

http://www.example.com/test.htm

나는 htaccess로 파일에 사용하고

http://shop.example.com/test.htm

RedirectMatch에

하려면입니다 :

RedirectMatch 301 http://www.example.com/(.*) http://shop.example.com/$1 

내가 왜 확실 해요 작동 안됨?

+0

'mod_rewrite' 사용해야하지'mod_alias', RedirectMatch' 도메인에 대해 아무것도 모르는'로. – Cheery

+0

http://httpd.apache.org/docs/2.2/mod/mod_alias.html#redirectmatch : _ "제공된 정규 표현식이 ** URL 경로 **와 일치합니다."_ – CBroe

답변

3
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^www\. 
RewriteRule ^/?test\.htm$ http://shop.example.com/test.htm [R,L] 

모든 URL의 경우는

RewriteRule ^/?(.*)$ http://shop.example.com/$1 [R,L] 

/?.htaccess 또는 서버의 설정에서이 규칙을 사용할 수있게 될 것입니다.

+0

'^ /?'는 '/'는 선택적으로 처음에 사용됩니다. 예 :'/ test' 또는'test'가 일치합니다. 'RewriteCond % {HTTP_HOST}^www \ .'는'RewriteCond % {HTTP_HOST}!^shop \. '이어야합니다. example.com의 사용자가 htaccess 파일을 가진 디렉토리로 들어갈 때이 방법으로 호스트를 검사합니다. 호스트는 상점으로 시작하지 않고 리디렉션합니다. – fyrye

+0

@fyrye 만약 당신이 나에게 설명해 준다면,'.htaccess'의 요청은'/'가없고'.conf' -'/'가있는 것입니다. 'example.com의 사용자가 htaccess 파일이있는 디렉토리에 들어갈 때 이런 식으로 생각하지 않습니다. 그는 'www'에서 리디렉션하려고합니다. 동일한 폴더를 사용하는 다른 하위 도메인이있을 수 있습니다. – Cheery

+0

당신은'/? '가 특별한 규칙이 아니라고 설명했습니다. 나는 그것이 그것을 이해할 수 있도록 영업 사원을위한 사용의 문자 적 ​​의미를 제공했다. OP는 루트 도메인 하위의 사용자가 하위 도메인으로 리디렉션되도록 강요하고 싶어했습니다. OP가 설정에서'www'를 강제하지 않았고 호스트가 루트 도메인의 별칭으로 www를 사용하면 매우 일반적입니다. 그럼 내가'http : // example.com/shop'에서'RewriteCond'를 제공하지 못한다고 설명했습니다. 그 시점에서 OP가 지정되지 않았기 때문에 OP에 여러 하위 도메인이 있다고 가정하지 않습니다. – fyrye

1

또 다른 쉬운 방법

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^http://www.example.com/test.htm[NC] 
RewriteRule ^(.*)$ http://shop.example.com/test.htm[L,R=301,NC] 
관련 문제