【问题标题】:Force HTTPS on my rewrite and rule .htaccess file在我的重写和规则 .htaccess 文件上强制使用 HTTPS
【发布时间】:2021-02-12 01:40:17
【问题描述】:

我想在我的网站上强制使用 https,但它与我的 .htaccess 的当前规则兼容

这是我目前的 htaccess 文件:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

谢谢

【问题讨论】:

    标签: .htaccess mod-rewrite https


    【解决方案1】:

    您能否尝试以下,如果变量%{HTTPS} 是否打开,您需要在其中查找条件,将此条件添加到已经存在的条件。另外请不要将它与现有的 URL 混合,因为它可能会暴露给客户端/浏览器(以您显示的当前示例为例)。

    RewriteEngine on
    RewriteCond %{HTTPS} off
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
    

    【讨论】:

    • 您好,感谢您的帮助!当我添加你的提议时,我得到一个 ERR_TOO_MANY_REDIRECTS
    • @IlannJoaquim,正如 anubhava 先生在 cmets 中问的那样,如果您的 htaccess 中已经有一些规则,请告诉我们吗?试着把这条规则放在它的开头。
    • 是的,我把它放在开头,我的 .htaccess 看起来和 RavinderSingh13 的命题完全一样,但是我得到错误太多重定向
    • @liann:代替RewriteCond %{HTTPS} off 尝试:RewriteCond %{HTTPS} !on。还要告诉你的 Apache 版本?
    • @IlannJoaquim 这取决于您的系统如何处理 SSL。如果 SSL 证书直接安装在应用程序服务器上,那么上述方法在大多数情况下都可以工作。但是,如果您使用前端 SSL 代理来管理 HTTPS,那么上述情况可能会导致重定向循环,因为应用程序服务器和代理之间的连接可能是 HTTP,而不是 HTTPS。所以,您需要知道 SSL 是如何管理的…… SSL 代理? Cloudflare 灵活的 SSL?在某些共享主机上,它也可能非常不标准,需要使用特定的环境变量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多