我的网站使用外部身份验证服务,该服务将用户引导离开所需的页面,执行登录,然后重定向回来。
问题是当用户从https页面重定向时,身份验证服务(我无法修改)愚蠢地重定向回http://,并在URL的末尾添加了:443,这只会引发错误来自Apache。
我已经有了一个htaccess指令,以确保用户始终在https上查看当前页面:
RewriteEngine on
RewriteCond %{SERVER_PORT} 80
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
我正在寻找的是一个重写规则,它将检测以http开头的URL,结尾于:443,然后将其重定向到https://,而不附加端口。
我试过这个:
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
但这似乎不起作用。
答案 0 :(得分:0)
使用以下代码替换.htaccess代码:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
此规则会将所有http流量重定向到https,而不管http请求使用的是哪个端口。