2010-12-30 5 views
0

하나의 도메인으로 이동하지만 그 도메인의 다양한 부분으로 이동하려는 많은 도메인이 있습니다.매핑 파일의 특정 도메인에 대한 mod_rewrite

# this is what I currently have 
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^.*\.?foo\.com$ [NC] 
RewriteRule ^.*$ ${domainmappings:www.foo.com} [L,R=301] 

# rewrite map file 
www.foo.com www.domain.com/domain/foo.com.php 
www.bar.com www.domain.com/domain/bar.com.php 
www.baz.com www.domain.com/other/baz.php.foo 

문제는 각 도메인을 RewriteCond에 포함시키지 않으려는 것입니다. 시도 :

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

그러나 모든 도메인에 적용됩니다. 매핑 파일에있는 도메인 만 리디렉션하도록 한 다음 매핑 파일의 도메인과 일치하지 않는 경우 다른 다시 쓰기로 계속 진행합니다.

답변

0

올바른 길을 가고 있습니다. 당신이해야 할 일은지도에서 파이프 연산자를 사용하여 잡아 먹는 것입니다.

RewriteCond ${domainmappings:%{HTTP_HOST}|NOTFOUND} ^(.+)$ 
RewriteCond %1 !^NOTFOUND$ 
RewriteRule ^.*$ ${domainmappings:%1} [L,R=301] 

두 번째 조건은 호스트가 목록에없는 경우 일치하지 않습니다. 여전히 www 접두어와 대소 문자를 처리해야하지만 아이디어는 얻을 수 있습니다.

0

나는이 사건을 알아 냈으므로 가까와서 www 접두사를 알아 내지 못했습니다. 아래 첫 번째 것을 사용하면 www가없이 작동합니다. 두 번째 것을 사용하면 www가 작동합니다. 나는 둘 다 사용하는 경우 - 둘 다 작동하지 않습니다.

RewriteCond %{HTTP_HOST} (.*)$ [NC] # works for without www 
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] # works with www 
RewriteCond ${domainmappings:%1|NOTFOUND} ^(.+)$ [NC] 
RewriteCond %1 !^NOTFOUND$ 
RewriteRule ^.*$ ${domainmappings:%1} [L,R=301] 

아이디어가 있으십니까?