Mod重写.htaccess - 几个重定向HTTP和HTTPS

时间:2015-11-06 22:51:15

标签: apache .htaccess mod-rewrite redirect

我将domain1.com作为我的" main"域,也是文档根。每个其他域(domain2.com,domain3.net等)都直接链接到domain1.com作为别名。

我为朋友购买的一些域名重定向到他们的网站空间。我使用以下规则:

# domain4.de -> externaldomain.com
RewriteCond %{HTTP_HOST} ^(www\.)?domain4.de$ [NC]
RewriteRule ^(.*) http://externaldomain.com/$1 [L,R]

我还将所有域重定向到https://等效的根域,同时剥离www。我还包含了一个旧的子域名来重定向,因为它已不再使用了。我一直在使用这条规则:

# Redirect alias Sites to HTTPS @ domain1.com
RewriteCond %{HTTP_HOST} ^(www\.)?domain1.net$ [NC,OR]
RewriteCond %{HTTP_HOST} ^(www\.)?domain1.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^(www\.)?domain1.de$ [NC,OR]
RewriteCond %{HTTP_HOST} ^(www\.)?domain2.de$ [NC,OR]
RewriteCond %{HTTP_HOST} ^(www\.)?domain2.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^blog.domain1.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^blog.domain1.net$ [NC,OR]
RewriteCond %{HTTP_HOST} ^blog.domain1.de$ [NC]
RewriteRule ^(.*)$ https://domain1.com/$1 [L,R=301]

对于HTTP - > HTTPS重定向我一直在使用以下规则:

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L] 

这是可能需要更改的规则,因为我一直试图从中删除单个域 - 因为SSL证书是* .domain1.com HTTPS不能用于此域

此规则将domain5.com重定向到domain1.com/subdir,同时将domain5.com保留在地址栏中:

RewriteCond %{HTTP_HOST} ^(www\.)?domain5\.com$ [NC]
RewriteRule !^subdir/ /subdir%{REQUEST_URI} [L,NC]

我试图使用此规则,但它没有做任何事情。

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !^(www\.)?domain5.com$ [NC]
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L] 

如果上述任何规则可以合并/优化,我也会感谢任何建议。我并没有真正表达自己,并且已经"黑客攻击了#34;通过反复试验大多数事情......

1 个答案:

答案 0 :(得分:1)

你可以这样做:

# domain4.de -> externaldomain.com
RewriteCond %{HTTP_HOST} ^(www\.)?domain4.de$ [NC]
RewriteRule ^(.*) http://externaldomain.com/$1 [L,R]

# Redirect alias Sites and http to HTTPS @ domain1.com without domain5
RewriteCond %{HTTP_HOST} !^(www\.)?domain5\.com$ [NC]
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^domain1.com$ [NC]
RewriteRule ^(.*)$ https://domain1.com/$1 [L,R=301]

# Redirects the domain5.com to domain1.com/subdir
RewriteCond %{HTTP_HOST} ^(www\.)?domain5\.com$ [NC]
RewriteRule !^subdir/ /subdir%{REQUEST_URI} [L,NC]