.htaccess用于https服务器端口的mod_rewrite regex

时间:2013-07-29 13:31:19

标签: regex .htaccess mod-rewrite https

我的网站使用外部身份验证服务,该服务将用户引导离开所需的页面,执行登录,然后重定向回来。

问题是当用户从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]

但这似乎不起作用。

1 个答案:

答案 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请求使用的是哪个端口。