【问题标题】:Issues with HTTPS to HTTP htaccessHTTPS 到 HTTP htaccess 的问题
【发布时间】:2017-04-19 17:25:53
【问题描述】:

我在某些 .htaccess 重定向中遇到了一些问题,这些重定向仅在某些情况下有效。

我的代码是

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

这是我的测试结果

https://www.example.com 重定向到 http://example.com

https://example.com 什么都不做

https://www.example.com/page-name 重定向到 http://example.com/page-name

https://example.com/page-name 什么都不做

这是一个 WordPress 网站,.htaccess 代码位于 WordPress 代码之上。我也在下面尝试过,我得到了相同的结果

【问题讨论】:

    标签: wordpress apache .htaccess redirect


    【解决方案1】:

    看起来该网站没有附加 SSL,所以

    RewriteCond %{HTTPS} on
    

    规则没有正常工作。

    因此,我采用这种方法来修复重定向,并使其在我在问题中提到的所有测试用例中都能正常工作。

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
    RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
    

    【讨论】:

      【解决方案2】:

      在您的 .htaccess 中使用它:

      RewriteCond %{HTTPS} =on
      RewriteRule ^(.*)$ http://example.com%{REQUEST_URI} [R,L]
      

      我假设您希望 www 强制不显示,因为您没有将它包含在 URL 中。如果是这种情况,请包含此额外条件以强制它不显示:

      RewriteCond %{HTTP_HOST} ^www\. [NC,OR]
      RewriteCond %{HTTPS} =on
      RewriteRule ^(.*)$ http://example.com%{REQUEST_URI} [R,L]
      

      确保在测试之前清除缓存。

      【讨论】:

      • 不幸的是,这不起作用。我认为网站上缺少 SSL 是个问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 2018-03-30
      • 2010-12-21
      • 1970-01-01
      • 1970-01-01
      • 2012-05-16
      相关资源
      最近更新 更多