【问题标题】:Forced https redirects in .htaccess result in /admin being redirected to /.htaccess 中的强制 https 重定向导致 /admin 被重定向到 /
【发布时间】:2018-01-13 19:33:03
【问题描述】:

我的网站及其关联的别名域都有 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

老实说,我以前从未遇到过这种行为,所以任何建议都将不胜感激!

【问题讨论】:

    标签: php apache .htaccess ssl redirect


    【解决方案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 ( ) 而不是常规配置中。

    您还将丢失将成为 GET 和正文参数的 POST。例如,如果您来自像

    这样的表单
    <form method="POST" action="http://xxxxxx">
    

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

    【讨论】:

    • 例如,这有什么作用……我是用它来代替我所拥有的还是代替……?等等谢谢!
    • 很遗憾,我不能接受这个答案 - 返回的错误是“重定向太多”。
    • RewriteCond %{HTTPS} off 需要取消注释才能检测它是http还是https。
    • @wargre 嗯,这似乎将主站点页面重定向到 /page。
    猜你喜欢
    • 2014-09-29
    • 2017-09-30
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2017-10-12
    • 2016-06-15
    • 2021-06-13
    • 1970-01-01
    相关资源
    最近更新 更多