使用mod_rewrite和htaccess将主域重定向到https但将所有子域重定向到http

时间:2015-01-11 00:32:12

标签: .htaccess http mod-rewrite https wildcard-subdomain

详情

我有一个商业主机gator帐户......不吹牛......附带免费的私人SSL和IP。我正在运行一个使用子域设置的wordpress MU安装,并通过他们提供的插件设置域映射。

假设您对Worpress MU一无所知......基本上Wordpress MU允许您在单个Wordpress安装下创建多个自托管博客。我有一个通配符子域设置来捕获所有sub.domain.com请求,Wordpress MU做了一些伏都教,将它重定向到正确的目的地。

私有SSL是免费的,所以我现在不打算使用通配符SSL,但我知道这是一个选项。当我说,当我点击从主域上的https到子域的任何链接时,https会粘贴到URL。

任何人都可以帮我做以下事情吗?

(请注意:我必须在http(s)://和www之间添加空格以打破链接以便发布我的问题)

对于主要的“博客”网址,我希望将www.domain.com和domain.com示例重定向到安全的https,结果为https:// www.domain.com

对于“通配符”子域“子博客”网址,我想将sub.domain.com和https:// sub.domain.com示例重定向为ssl格式为http,结果为http:/ / sub.domain.com

代码示例将受到赞赏,一个详细的(虚拟)教程,所以我可以理解发生了什么将是伟大的。我是mod_rewrite的新手,我的技能等级仅限于基本的301重定向。

谢谢

1 个答案:

答案 0 :(得分:5)

您可以在根.htaccess中使用它:

RewriteEngine on 

# redirect to https www
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)(domain\.com)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [R=301,L]

# redirect to http subdomain
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^((?!www).+\.domain\.com)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]