【问题标题】:Apache .htaccess redirecting https to http and vice versaApache .htaccess 将 https 重定向到 http,反之亦然
【发布时间】:2012-02-22 15:59:51
【问题描述】:

我正在尝试安装 drupal 7 以将三个页面重定向到 https 并强制其他所有内容返回 http。 孤立地,这里的第一个重写规则有效。两者都启用后,没有任何效果,一切都重定向回 /index.php

# Turn SSL on for checkout except for checkout, signup/login and user/login
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^(\/checkout)$ [NC,OR]
RewriteCond %{REQUEST_URI} ^(\/signup\/login)$ [NC,OR]
RewriteCond %{REQUEST_URI} ^(\/user\/login)$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

# Turn SSL off everything but checkout, signup/login and user/login
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !(checkout|signup\/login|user\/login) [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

【问题讨论】:

  • 您找到解决方案了吗?你可能想把它贴在这里,我也被同样的问题困住了。
  • 我认为这与 Drupal 处理 URL 的方式有关,但我真的不确定。

标签: .htaccess mod-rewrite apache2


【解决方案1】:

这看起来是正确的,并且规则对我有用。由于第一条规则有效,我假设RewriteEngine on 高于这些规则。您的 htaccess 文件中是否还有其他规则?可能是其他原因导致问题。

我尝试了以下规则并按照他们的预期重定向。缺少 HTTPS 规则应该不会产生影响。

RewriteEngine on

# Turn SSL on for checkout except for checkout, signup/login and user/login
RewriteCond %{REQUEST_URI} ^(\/checkout)$ [NC,OR]
RewriteCond %{REQUEST_URI} ^(\/signup\/login)$ [NC,OR]
RewriteCond %{REQUEST_URI} ^(\/user\/login)$ [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/ssl/$1 [R=301,L]

# Turn SSL off everything but checkout, signup/login and user/login
RewriteCond %{REQUEST_URI} !(checkout|signup\/login|user\/login) [NC]
RewriteRule ^ssl/(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

我设置了这些文件进行测试:

  • 公开/
    • 结帐(内容:结帐)
    • foobar(内容:foobar)
    • 注册/
      • 登录(内容:注册/登录)
    • 用户/
      • 登录(内容:用户/登录)
    • ssl/
      • 结帐(内容:ssl结帐)
      • foobar(内容:ssl foobar)
      • 注册/
        • 登录(内容:ssl 注册/登录)
      • 用户/
        • 登录(内容:ssl 用户/登录)

您可以尝试这些规则,看看它们是否按预期工作:

$ curl -L http://samhuri.net/checkout
ssl checkout
$ curl -L http://samhuri.net/ssl/checkout
ssl checkout
$ curl -L http://samhuri.net/foobar
foobar
$ curl -L http://samhuri.net/ssl/foobar
foobar

传递curl -i 标志以查看标题和状态代码。

所以我怀疑还有其他问题。您还有其他规则可以重定向到 https 或从 https 重定向吗?

【讨论】:

    猜你喜欢
    • 2013-12-27
    • 1970-01-01
    • 2018-08-25
    • 2012-11-02
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    • 1970-01-01
    • 2019-12-17
    相关资源
    最近更新 更多