【问题标题】:How do I force (subdomain) multisite to create new subsites with https?如何强制(子域)多站点使用 https 创建新的子站点?
【发布时间】:2018-09-02 14:31:03
【问题描述】:

有谁知道在创建新子站点时如何强制子域多站点保留 URL 架构(特别是 https)?

默认情况下,它使用“http://”创建带有“siteurl”和“home”选项的子站点。

ms-functions.php 中有几行明确告诉子站点 NOT 使用架构,所以我想知道在不修改源代码的情况下最好的更改方法是什么。谢谢!

【问题讨论】:

  • 如下所述,您可以修改 .htaccess 或修改服务器配置中的虚拟主机文件

标签: wordpress multisite


【解决方案1】:

执行此操作的典型方法是将以下内容添加到安装的 .htaccess 文件中:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

或者使用“强制 SSL”类型的插件之一并通过网络激活它。

就个人而言,我是 Really Simple SSL 的粉丝。

如果您使用的是域映射之类的插件,您也可以在其中指定 HTTPS。

【讨论】:

  • 感谢您的快速回复。我们使用映射,并且能够强制这些域使用 SSL,我们面临的问题是即使在域被映射之后,wordpress 也会使用后端 url。这会导致混合内容问题。我觉得必须有一种方法可以连接到何时创建新博客并强制它们使用 https。
  • 您是否尝试过我提到的解决方案? .htaccess 将强制对 https 的任何请求,而真正简单的 SSL 也是如此 - 在前端和管理方面。确实没有必要挂钩新的博客挂钩,但如果您坚持,您需要将switch_to_blog()update_option('siteurl', ...)update_option( 'home', ... ) 的组合挂钩到wpmu_new_blog 挂钩。
  • 是的,我不能使用 htaccess 重写或其中一个插件有几个原因。我确实查看了您提到的 Real Simple SSL 插件,他们只是对这些字段进行数据库更新以使它们访问 https。我想我可能只是写一个执行类似操作的 cron 作业。再次感谢您的帮助和反馈,非常感谢!
  • 您好,我也想了解网站创建过程,并默认将网站设为 https。例如,当电子邮件发送给他们创建站点的用户时,URL 应该是 https...这不是关于重定向,而是关于为新站点创建“默认”。
【解决方案2】:

我们使用Multisite Clone Duplicator plugin,并且我能够在克隆过程中编写一个挂钩到插件的函数,避免接触核心代码。

if ( ! function_exists( 'mucd_after_copy_data' ) ) {
function force_https($from_site_id, $to_site_id) {
        $site_url = get_site_url($to_site_id);
        $https_site_url = str_replace( 'http://', 'https://', $site_url );
        update_blog_option( $to_site_id, 'siteurl', $https_site_url );
        update_blog_option( $to_site_id, 'home', $https_site_url );
    }
    add_action('mucd_after_copy_data', 'force_https', 10, 2 );
}

【讨论】:

    猜你喜欢
    • 2016-11-12
    • 2019-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-05
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多