【问题标题】:how in htaccess can i redirect the user to https from http and back again我如何在 htaccess 中将用户从 http 重定向到 https 并再次返回
【发布时间】:2011-05-03 11:39:04
【问题描述】:

我正在尝试让登录页面重定向到 https,而所有其他页面都恢复为标准 http。当我将 /login 作为地址时,它会显示为 /index.php?page=login 并且不会显示在安全页面上。

有问题的htaccess代码如下:

RewriteCond %{SERVER_PORT} 80 
RewriteCond %{REQUEST_URI} ^/login$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,QSA,L]

RewriteCond %{REQUEST_URI} !^/login$
RewriteCond %{SERVER_PORT} 443 
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,QSA,L]

RewriteRule ^([a-zA-Z0-9_\-\(\)]+)[/]?$ /index.php?page=$1

【问题讨论】:

    标签: .htaccess redirect https


    【解决方案1】:

    在应用程序级别执行此操作可能会更好,即直接将“登录”链接作为 HTTPS 链接发送。

    从 HTTP 重定向到 HTTPS 的问题是客户端首先通过纯 HTTP 发出请求。如果它只进入 HTTPS 初始页面,则不一定有问题,但如果您在 HTTP 请求中发送凭据,该请求被透明地重定向到 HTTPS 页面,无论如何它们都会被泄露。

    【讨论】:

    • 为了防止凭据在应用程序级别无意中以明文形式发送,您可以在 CSP default-src directive 中使用 scheme-sourcehttps:
    猜你喜欢
    • 1970-01-01
    • 2011-05-20
    • 2017-07-18
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    相关资源
    最近更新 更多