AWS amp; PHP: https website redirects to http when there is no slash at the end(AWSamp;PHP:当末尾没有斜杠时,HTTPS网站重定向到http)
问题描述
我们有一个在AWS上托管其IIS Web服务器的客户端。当导航到此服务器上的特定PHP Web应用程序时,如果末尾有斜杠,则不起作用,但如果没有斜杠,则不起作用。
这是有效的: https://example.com.au/application/ 但是,如果要在地址栏中输入以下内容: https://example.com.au/application 它将重定向到末尾带有斜杠的等效http地址: http://example.com.au/application/
http已通过防火墙禁用,因此结果为错误。
以下是Chrome调试器中的请求详细信息 因此,我的问题是,我的客户端需要检查什么才能确保不发生此重定向?或者,它不重定向到HTTP,而是重定向到HTTPS?其他信息:
- .NET Web应用程序似乎不会出现同样的问题。例如‘https://example.com.au/dotnetapp’不会重定向至‘http://example.com.au/dotnetapp/’.
- URL重写中未配置规则
- 触发HTTPS URL时,IIS日志显示请求,但不显示HTTP URL。 编辑:这似乎是由于浏览器缓存造成的。禁用浏览器缓存后,我可以在日志文件中看到301条目。
- "index.php"设置为默认文档
推荐答案
一个可能的原因是,php项目不知道安全连接处于活动状态,因此在添加斜杠时会将页面重定向到http版本。
PHP应用程序可以通过$_SERVER['SERVER_PORT']
、$_SERVER['REQUEST_SCHEME']
检测安全连接。但是,如果应用程序位于某个反向代理之后(例如,Varish或Amazon的弹性负载均衡器),则到PHP应用程序的连接可能不安全。应该通知PHP有关X-Forwarded-*
头的原始安全连接。
请检查PHP是否设置了以下变量:
$_SERVER['HTTP_X_FORWARDED_PROTO']
:应为https
,$_SERVER['HTTP_X_FORWARDED_PORT']
:应为443
。
symfony框架
如果应用程序使用的是框架(如symfony),则应将其配置为信任反向代理的IP并信任这些标头:
# config/packages/framework.yaml
framework:
# ...
# the IP address (or range) of your proxy
trusted_proxies: '192.0.0.1,10.0.0.0/8'
# trust *all* "X-Forwarded-*" headers
trusted_headers: ['x-forwarded-for', 'x-forwarded-host', 'x-forwarded-proto', 'x-forwarded-port']
# or, if your proxy instead uses the "Forwarded" header
trusted_headers: ['forwarded']
如果反向代理服务器的IP地址发生更改,请参阅https://symfony.com/doc/current/deployment/proxies.html了解更多详细信息,https://symfony.com/doc/current/deployment/proxies.html#but-what-if-the-ip-of-my-reverse-proxy-changes-constantly了解更多详细信息。
这篇关于AWS&;PHP:当末尾没有斜杠时,HTTPS网站重定向到http的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:AWS&;PHP:当末尾没有斜杠时,HTTPS网站重定向到http


- 如何使用 Google API 在团队云端硬盘中创建文件夹? 2022-01-01
- 使用 GD 和 libjpeg 支持编译 PHP 2022-01-01
- 如何从数据库中获取数据以在 laravel 中查看页面? 2022-01-01
- PHP - if 语句中的倒序 2021-01-01
- openssl_digest vs hash vs hash_hmac?盐与盐的区别HMAC? 2022-01-01
- 如何在 Symfony2 中正确使用 webSockets 2021-01-01
- 覆盖 Magento 社区模块控制器的问题 2022-01-01
- Oracle 即时客户端 DYLD_LIBRARY_PATH 错误 2022-01-01
- PHP foreach() 与数组中的数组? 2022-01-01
- Laravel 5:Model.php 中的 MassAssignmentException 2021-01-01