【问题标题】:Redirect all version of URLs to https using .htaccess使用 .htaccess 将所有版本的 URL 重定向到 https
【发布时间】:2018-02-22 00:09:54
【问题描述】:

我正在尝试将我的网站 URL 的所有版本重定向到 https://www。通过使用 .htaccess 文件但遇到问题。

  • ranglerz.com
  • www.ranglerz.com
  • http://ranglerz.com
  • http://www.ranglerz.com
  • https://www.ranglerz.com
  • https://ranglerz.com

所有上述版本的 URL 都可以正常工作,但最后一个 URL 没有通过 www 重定向,这是我在 .htaccess 文件中使用的代码

RewriteCond %{HTTPS} off 
RewriteCond %{HTTPS_HOST} !^www.ranglerz.com$ [NC]
RewriteRule ^(.*)$ https://www.ranglerz.com/$1 [L,R=301]

【问题讨论】:

标签: .htaccess redirect mod-rewrite


【解决方案1】:

您需要在您的条件之间使用 [OR] 子句来触发您的规则,以满足 2 个条件中的任何一个:

RewriteEngine On

RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.ranglerz.com%{REQUEST_URI} [L,R=301]

【讨论】:

  • 不工作,显示 www.ranglerz.com 将您重定向太多次的错误。
  • 您清除浏览器缓存了吗?如果是,则将上述规则中的 R=301 更改为 R=308,然后在 Chrome 开发工具中使用 缓存禁用 进行测试,并在“网络”选项卡中检查您获得的 301/302/308 重定向 URL 是什么。
  • 与 308 相同的问题
  • 这有点奇怪,因为RewriteCond %{HTTPS} !on [OR]RewriteCond %{HTTPS} off [OR] 完全相同,无论如何我现在已经更新了代码以反映它。如果一切对您有用,您可以接受答案。
【解决方案2】:
DirectoryIndex index.php
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R]

上面的代码可以很好地完成你想要的,只需将它放在主目录的.htaccess文件中。

此外,如果您还需要强制每个 site.com 为 www.site.come ,只需替换上面代码中的流线:

RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R]

用这个:

RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R]

我在Apache - how to make http requests into https only?之前已经回答过这样的问题了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-11
    • 2014-08-23
    相关资源
    最近更新 更多