【问题标题】:redirect http to https without www in .htaccess将 http 重定向到 https,而 .htaccess 中没有 www
【发布时间】:2016-09-29 15:02:27
【问题描述】:

我有底部代码,我想始终使用 https 而不是 www,问题是当 URL 为 http://example.com 时未重定向到 https://example.com

有什么想法吗?非常感谢

RewriteEngine On   
RewriteCond %{HTTPS} !=on      
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]

【问题讨论】:

    标签: .htaccess mod-rewrite https url-redirection


    【解决方案1】:

    推荐的最佳实践方法根本不是使用 mod_rewrite,而是将 Redirect 指令放在各种虚拟主机中。这具有发出单个 Location 标头的优点,然后不必再次进行这些比较。使用重写解决方案,您将在对网站的每个后续请求中比较这些值,从而大大增加了提供内容的总开销。

    这在http://wiki.apache.org/httpd/RedirectSSL有更详细的讨论

    类比是在前门询问某人是否来到了正确的房子,而不是每次他们采取后续步骤时询问他们,其余的访问。

    【讨论】:

    • 非常感谢您的快速响应,可以是非常好的解决方案,但在我的情况下使用共享服务器,并且无法使用虚拟机访问 apache
    【解决方案2】:

    由于之前的单一重定向规则不起作用,请尝试以下两种检查的组合:

    RewriteEngine On
    
    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]
    
    RewriteCond %{HTTPS} off [NC]
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    

    【讨论】:

    • muchas gracias por tu rapida respuesta, ahora si que me actualiza la url como quiero, pero el navegador despues de haber borrador la cache me indica: page doesn't work 页面被重定向太多次跨度>
    • @jesus 尝试将!=on [NC] 更改为off [NC]。另外,您是否清除了浏览器缓存,因为您在这里使用了 301 重定向。
    • 按你说的更新!=on [NC] 关闭 [NC] 并清除缓存但对我不起作用,它告诉我:页面不起作用页面被重定向太多次跨度>
    • @jesus 更新了我上面的答案。
    • 非常感谢您的关注,但使用简单的 .htaccess,实际上您的代码本身对我不起作用。问题是 https 的条件,因为它的评论只有在 www 条件下才能正常工作。这很简单,但它不起作用,因为代码看起来很好。错误仍然存​​在:页面不起作用页面被重定向太多次
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    • 2020-05-27
    • 1970-01-01
    • 1970-01-01
    • 2013-07-01
    • 2016-11-08
    相关资源
    最近更新 更多