【问题标题】:Force HTTPS / Mod-rewrite behind reverse proxy (with WordPress)在反向代理后面强制 HTTPS / Mod-rewrite(使用 WordPress)
【发布时间】:2016-08-23 00:58:14
【问题描述】:

请原谅我缺乏这方面的知识。

首先,我们的情况:我们有一个反向代理设置,我们有http://www.xxx.ca/x,有时http://www.xxx.ca/x/y 被转发到http://xxx1a.xxx.ca/x 或http://xxx1a.xxx.ca/x/y

我们一直在尝试创建一个通用的 .htaccess,我们不必专门定义任何子目录。基本上,我们可以在 100 个站点上使用这个 .htaccess,而无需逐个站点地修改文件。

我们已经让这部分工作了。但是,我们无法强制使用 https。我看到的每个示例都使用 HTTP_HOST,它返回代理服务器的值 - 而不是原始请求。

也许我们的设置有一个完全不同的解决方案,但我对 apache 的了解有限。以下是我们目前拥有的 - 它解决了通用子文件夹问题,但没有解决 HTTPS 问题。

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteBase /
RewriteRule ^index\.php$ - [L]

RewriteCond %{ENV:URI} ^$
RewriteRule ^(.*)$ - [ENV=URI:$1]

RewriteCond %{ENV:BASE} ^$
RewriteCond %{ENV:URI}::%{REQUEST_URI} ^(.*)::(.*?)\1$
RewriteRule ^ - [ENV=BASE:%2]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . %{ENV:BASE}index.php [L,QSA]
</IfModule>

如果有更好的解决方案,我完全愿意 100% 改变这一点。

【问题讨论】:

    标签: apache .htaccess mod-rewrite https mod-proxy


    【解决方案1】:

    我不确定我是否理解您何时必须将用户重定向到 https。无论如何,当你必须切换到 https 时,你可以检查 SERVER_PORT 服务器内部变量,如果不是 80 则重定向:

    RewriteCond %{SERVER_PORT} 80
    RewriteRule ^(.*)$ https://%{ENV:URI}/$1 [L,R=301]
    

    【讨论】:

      猜你喜欢
      • 2017-08-25
      • 2020-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-18
      • 2023-04-05
      • 1970-01-01
      相关资源
      最近更新 更多