2013-09-27 2 views
1

일반/멀티 도메인 httpd.conf 라인을 사용하여 www가 아닌 ​​요청을 해당 www로 리디렉션 할 수 있습니까?* 일반 * httpd.conf가 www가 아닌 ​​주소를 www로 리디렉션

일반적으로, 나는 하드 코드 된 도메인 이름에 의존하지 않는 것을 의미합니다.

RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} ^yourdomain.com [NC] 
RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [L,R=301] 

내 웹 사이트를 추가/제거 할 때마다 httpd.conf를 편집하고 싶지 않습니다. 그 웹 사이트는 동적으로 추가/제거됩니다!

답변

3

mod_rewrite documentation에는 필요한 모든 정보가 있지만 읽을 거리가 많습니다. 원하는 부분에는 두 가지 부분이 있습니다. 첫째, www.으로 시작하지 않는 도메인과 일치해야합니다. 그런 다음 www. 접두어를 현재 URL에 붙여야합니다. 첫 번째 부분에 대한

은 (모두 RewriteCondRewriteRule에 적용되는)이있다 :

당신은과 패턴 문자열을 앞에 수 있습니다 '!' 문자 (느낌표)는 일치하지 않는 패턴을 지정합니다.

그래서 "호스트 이름이 www가 시작되지 않습니다." 다음과 같이 테스트 할 수 있습니다 : 두 번째 부분에 대한

RewriteCond %{HTTP_HOST} !^www\. [NC] 

이있다 :

일반 텍스트뿐만 아니라, Substition 문자열은 규칙 조건에서와 같이 [...] 서버 변수를 포함 할 수 있습니다 테스트 문자열 (%는 {VARNAME})

그래서 실제 리디렉션은 다음과 같이 일반적인 만들 수 있습니다 :

RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [L,R=301] 

덧붙여,이 반대를 할 수도 있습니다 (에 모든 리디렉션하지있는 www.) RewriteRule 대체는이 사용할 수 있기 때문에 : 마지막으로 일치한다 RewriteCond 패턴

백 참조 (%의 N을)

그래서 당신은www. 후 호스트 이름 모든 것을 캡처 규칙의 대상으로 그것을 사용할 수 있습니다

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

우수, 대단히 고맙습니다, 모자! – TheDude

관련 문제