我不得不更新我的.htaccess:
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Run Code Online (Sandbox Code Playgroud)
对此:
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Run Code Online (Sandbox Code Playgroud)
让它在AWS Elasic负载均衡器后面工作.
这一切似乎在AWS上运行良好,但在我的本地环境中,我陷入了重定向循环.
如何让这个设置在两种环境中正常工作?
这应该是一个快速...这是我目前的.htaccess文件:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Run Code Online (Sandbox Code Playgroud)
我需要做的是确保如果http://www.mydomain.com/cart/达到,它需要强制HTTPS ...... /cart/以及其中的任何内容/cart/
目前我的服务器上已包含SSL.想通过https强制我的用户使用登录页面登录.
<?php
if (empty($_SERVER['https']) || $_SERVER['https'] != 'on') {
header('location: https://my_login_page');
exit();
}
# rest of code
...
Run Code Online (Sandbox Code Playgroud)
但是当没有SSL时,这是一个问题.
现在我有情况.用户请求关注URL
http://domain.com/login.php
Run Code Online (Sandbox Code Playgroud)
在这里,我无法访问$_SERVER['https']并希望确保可以将用户重定向到
https://domain.com/login.php
Run Code Online (Sandbox Code Playgroud)
例如,SSL证书在一段时间后过期,并希望保持用户使用登录w/out安全连接.
我的目标是这样的例子:
if (ssl_installed() && (empty($_SERVER['https']) || $_SERVER[] != 'on')) {
header('location: https://domain.com/login.php');
exit();
}
# when there's no SSL it continues using HTTP
Run Code Online (Sandbox Code Playgroud)
是的,想写函数(例如ssl_installed():),true当可能使用安全连接时返回,否则false.
我已经尝试过使用get_headers()并意识到它总是会对https://链接返回false .
可能的方法:
我已经有了解决方案.我的数据库中的配置表包含行ssl=1(或0),并且在建立数据库连接后我使用此值来判断是否可以使用SSL,并且上面提到的函数使用此值返回结果.
我的问题是:有更简单的解决方案吗?
要明确:我正在寻找PHP-ONLY SOLUTION(自动检测)!
任何帮助,将不胜感激.