.htaccess中的强制https重定向导致/ admin被重定向到/

时间:2017-08-06 10:10:23

标签: php apache .htaccess ssl redirect

我的网站及其关联的别名域都有SSL证书。

我继承了一个由数据库支持的Laravel框架 - 它决定了在不同的域上呈现的页面。我希望相当标准。

强制重定向我强制使用以下方式强制重定向.htaccess中的主域名重定向:

# RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

所有精致和花花公子 - 这完美无缺。但是,访问https://www.mywebsite.co.uk/admin时,此重定向会停止访问并重定向到https://www.mywebsite.co.uk

如果我诚实,我从未遇到过这种行为,所以任何建议都会非常感激!

1 个答案:

答案 0 :(得分:1)

替换

RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]    

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}/\1 [L,R=301]

这将捕获您的页面​​并将页面附加到https://xxxxxxx/

而不是“RewriteCond%{HTTPS} off”您也可以将重写规则放在一个侦听http only()而不是一般配置中。

此外,您将松开将成为GET和body参数的POST。例如,如果你来自像

这样的形式
<form method="POST" action="http://xxxxxx">

您的服务器将检测到它是http,因此会将重定向发送到https。浏览器将发送回https://但使用GET。此外,重定向删除查询的主体,所以如果那里有参数(或json),重定向将删除它。