【问题标题】:CodeIgniter with Wordpress, https with http, on AWS with Load Balancer, Wordpress permalinks not workingCodeIgniter 与 Wordpress,https 与 http,在 AWS 上与负载均衡器,Wordpress 永久链接不起作用
【发布时间】:2017-01-31 17:28:27
【问题描述】:

我有以下设置。带有负载均衡器的 Elastic Beanstalk 环境。安装在根目录中的 Web 应用程序正在使用 CodeIgniter。 Wordpress 安装在根目录下的 /blog 子目录中。 CodeIgniter 应用程序需要 https,但 wordpress 需要是 http。负载均衡器配置为监听https和http,负载均衡器后面的实例是http。

我管理它的第一个配置是根目录中的 .ebextensions 文件。此文件与应用程序一起部署以设置 .conf 以将所有 http 流量重定向到 https 除了 /blog。该文件看起来像这样

files:
    "/etc/httpd/conf.d/ssl_rewrite.conf":
        mode: "000644"
        owner: root
        group: root
        content: |
            RewriteEngine On
            <If "-n '%{HTTP:X-Forwarded-Proto}' && %{HTTP:X-Forwarded-Proto} != 'https'">
            RewriteCond %{REQUEST_URI} !^/blog/
            RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
            </If>

配置的下一步是根目录中的 .htaccess 文件。这控制 CI 请求。它看起来像这样:

<FilesMatch "\.(ttf|otf|eot|woff|woff2|svg)$">
  <IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
  </IfModule>
</FilesMatch>

RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|uploads|blog|assets|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Options -Indexes

最后在包含 Wordpress 的 /blog 目录中,我有了这个 .htaccess

RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]

CI 应用工作正常,http 请求正确发送到 https。 /blog 根目录本身(即“主页”,例如 http://example.com/blog)也可以正常工作。甚至像http://example.com/blog/wp-admin/options-general.php 这样的/blog/子目录也可以正常工作。不起作用的是诸如http://example.com/blog/my-article 之类的永久链接(可能是因为它们不是真实文件)。如果我更改永久链接设置以删除永久链接并允许帖子网址看起来像这样http://example.com/blog/?p=123,那也可以。只有永久链接不起作用。

另一个问题(这应该很明显)是,如果有人尝试使用 https 直接访问博客,他们将收到混合内容警告和断开的链接。所以我还需要将https://example.com/blog/* 重定向回http。

我确信这个设置过于复杂,我可以删除两个 .htaccess 文件并将我的所有设置放在 .ebextensions 配置文件中,但是我不知道该怎么做。几天来,我一直在拼凑几个解决方案,例如thisthis,每个解决方案都会产生另一个问题。

对于任何建议 Wordpress 也应该是 https 的人,我并不反对,但是我已经在这条路上走了一个多星期,没有好的解决方案可以让我维护非 ssl 测试和开发环境这将正确部署到 AWS,而不会出现凌乱的插件、生产中更改的文件(我无法轻松地移植回测试和开发)以及其他 https/wordpress 问题的主机。最简单的解决方案似乎是运行 Wordpress http。我也愿意使用另一个 CMS 来替换 Wordpress。底线是我只希望博客在 AWS 上的 CI 下,在 https/http 中,一起玩得很好,并且易于部署。

还应注意,在开发和测试中,一切正常。 dev 和 test 之间唯一的显着区别是 .ebextensions 文件和 https 重定向。

感谢任何帮助。

【问题讨论】:

    标签: wordpress .htaccess codeigniter amazon-web-services ssl


    【解决方案1】:

    观看此视频: AWS solution 您需要使用正确的标头以免发生这种情况,特别是如果您的负载均衡器未使用实例和负载均衡器之间的安全连接

    【讨论】:

      猜你喜欢
      • 2015-04-28
      • 2018-01-03
      • 2022-07-23
      • 1970-01-01
      • 2011-05-18
      • 2015-07-03
      相关资源
      最近更新 更多