【问题标题】:Redirect Primary Domain to https but all Sub-domains to http with mod_rewrite and htaccess使用 mod_rewrite 和 htaccess 将主域重定向到 https,但将所有子域重定向到 http
【发布时间】:2015-03-09 01:58:15
【问题描述】:

详情

我有一个商业主机 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 重定向。

谢谢

【问题讨论】:

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


    【解决方案1】:

    你可以在你的根目录中使用它.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]
    

    【讨论】:

    • 感谢您的帮助。这很棒,您创建两个单独规则的方式确实有助于让我了解事物的运作方式。我想我现在有了方向。非常适合重定向没有 https: 但不会将 https 重定向到 http 的链接。我将阅读一些教程,以便更好地掌握这门语言,看看我是否可以让它发挥作用。我将发布我的解决方案。
    • 第二个 RewriteRule 将子域重定向到 http。您只需将domain 更改为您的真实域名...
    • 谢谢克罗斯。我了解如何使用代码,它运行良好,但只能解决 75% 的问题。它将使用http重定向一个url以使用https ..它将重定向www。到 https 和 sub。到http ...它不会将https重定向到http。到目前为止,我尝试过的任何事情都会让我陷入循环。
    • 我将 https 子域重定向到 http。给我一个不起作用的链接示例(达到预期的结果)
    • 我认为您在纠正我的示例时犯了一个错误。您只需要更改 2x domain 即可(使用 .com 域)
    猜你喜欢
    • 2017-04-22
    • 1970-01-01
    • 1970-01-01
    • 2015-05-19
    • 1970-01-01
    • 2018-06-02
    • 1970-01-01
    • 2015-02-13
    • 1970-01-01
    相关资源
    最近更新 更多