【问题标题】:Unsafe connection after changing rules in .htaccess更改 .htaccess 中的规则后连接不安全
【发布时间】:2017-12-04 23:52:40
【问题描述】:

我正在尝试设置规则以将 URL 从页面 contact.php 更改为 contact,但该网站现在在主页上显示不安全连接,但在其他页面上没有。

这是我使用的规则:

RewriteRule ^contact(.[A-Za-z0-9-]+)/?$ contact.php?=$1

虽然我还没有设置这个干净的 URL,但奇怪的是该网站不再使用安全连接。

链接是here。即使我清除了规则,它仍然不安全,即使您在 URL 中写了 https://,在浏览其他页面并再次返回主页后,它也不再安全了。

你能告诉我这个问题吗?

【问题讨论】:

    标签: php url mod-rewrite


    【解决方案1】:

    我刚刚检查了您的网站。对于每个绝对 URL,您需要使用 https 而不是 http 作为协议或使用相对 URL。 所以请检查你的 HTML a-tags。 要在 https 中也有主站点,您应该添加另一个重写规则:

    RewriteCond %{HTTPS} !=on
    RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
    

    另一件事是将当前联系人正则表达式修复为:

    RewriteRule ^contact([.A-Za-z0-9-]*)/?$ contact.php?=$1
    

    【讨论】:

    • 金森,非常感谢。我在需要时在 constants.php 中使用带有站点根 URL 的常量,但忘记在 menu.php 中设置绝对 https 路径。奇怪的是,我写的链接过去是安全连接,但在 htaccess 中写了一些规则之后却没有。就重写规则而言,总会有一个点或逗号在某处丢失:)
    【解决方案2】:

    这可能不会直接回答您的问题,但是当我需要更改网址时,我会使用 javascript。你可以试试……

    var obj = { Title: 'Contact Us', Url: '/contact'};
    history.pushState(obj, obj.Title, obj.Url);
    

    这将允许浏览器按预期从服务器查看页面并仅显示 url。

    【讨论】:

    • 谢谢。我在括号左侧写了点,但现在用金森回答解决了,但还是谢谢。
    猜你喜欢
    • 2018-08-25
    • 2020-06-19
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 2018-03-27
    • 1970-01-01
    • 1970-01-01
    • 2019-01-09
    相关资源
    最近更新 更多