【问题标题】:Redirect Server Aliases to Server Name Over HTTPS on Apache在 Apache 上通过 HTTPS 将服务器别名重定向到服务器名称
【发布时间】:2021-04-14 18:52:17
【问题描述】:

一段时间以来,我一直在四处寻找问题的答案,并阅读了其他各种答案,但没有找到适合我的答案。

我要解决的问题涉及重定向对安装在 Apache 服务器上的 WordPress 站点的访问。 WordPress 站点是作为 WordPress 网络安装的一部分安装的众多站点之一,该站点设置在域 https://www.mysite1.co.uk 上。

还需要使用一些服务器别名来访问该站点,这些别名将被重定向到根域。我在 Apache 配置中创建了额外的域作为服务器别名,并设置了重定向以确保如果输入了其中一个别名,那么它应该被重定向到根域。

<VirtualHost *:80>
    ServerName www.mysite1.co.uk
    ServerAlias mysite1.co.uk www.mysite2.co.uk mysite2.co.uk
    ...

    RewriteEngine On
    RewriteCond %{HTTPS} off [OR]
    RewriteCond %{HTTP_HOST} !^www\.
    RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)\.?$ [NC]
    RewriteRule ^ https://www.mysite1.co.uk%{REQUEST_URI} [R=301,L]
</VirtualHost>

<VirtualHost *:443>
    ServerName www.mysite1.co.uk
    ServerAlias mysite1.co.uk www.mysite2.co.uk mysite2.co.uk
    ...

    RewriteEngine On
    RewriteCond %{HTTPS} off [OR]
    RewriteCond %{HTTP_HOST} !^www\.
    RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)\.?$ [NC]
    RewriteRule ^ https://www.mysite1.co.uk%{REQUEST_URI} [R=301,L]

    SSLEngine On
    SSLCertificateFile "certs/mysite1.co.uk.crt"
    SSLCertificateKeyFile "certs/mysite1.co.uk.key"
</VirtualHost>

只要用户使用 http 输入其中一个别名,此配置就会起作用,它们会被重定向到 https://www.mysite1.co.uk/。但是,如果他们使用 https 输入别名,而不是被重定向到 https://www.mysite1.co.uk/,他们根本不会被重定向。

我是否遗漏了配置中的某些内容,或者我是否需要分离 https 配置并将别名添加到它们自己的虚拟主机中以进行重定向。 这些站点托管在 CentOS 7.9.2009 上并运行 Apache 2.4.6。

【问题讨论】:

    标签: wordpress apache redirect httpd.conf


    【解决方案1】:

    如果我理解正确,您会尝试将到达您的 apache 的每个已知域重定向到一个域,并且当连接以 HTTP 形式出现时,您希望将其重定向到 HTTPS。

    为了保持配置简单,我会创建 3 个不同的虚拟主机:

    第一个将侦听 http 并包含您要重定向的每个域(包括主要的域,因为它正在侦听 http)。此虚拟主机将通过 https 将所有内容重定向到主域:

    <VirtualHost *:80>
       ServerName main.site.com
       ServerAlias mysite.example.com
       ServerAlias another.site.com
       Redirect permanent / https://main.site.com/
    </VirtualHost>
    

    第二个将侦听 https 端口并包括除主域之外的所有域并将其重定向到您的主域(与前一个类似,但不包括主域)

    <VirtualHost *:443>
       ServerName mysite.example.com
       ServerAlias another.site.com
       Redirect permanent / https://main.site.com/
       
       ...
       SSLEngine On
       ...
    </VirtualHost>
    

    最后,main 只会监听 https 并且只包含主域:

    <VirtualHost *:443>
       ServerName main.site.com
       
       ...
       SSLEngine On
       ...
    </VirtualHost>
    

    这样,唯一需要配置(文档根目录、位置等)的虚拟主机是最后一个。

    【讨论】:

      猜你喜欢
      • 2021-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-15
      • 2015-01-23
      • 2016-12-30
      • 1970-01-01
      • 2018-03-20
      相关资源
      最近更新 更多