【问题标题】:Apache .htaccess rewrite all urls to https home page with exceptions that rewrite to https current pageApache .htaccess 将所有 url 重写为 https 主页,但重写为 https 当前页面的例外情况除外
【发布时间】:2012-09-07 14:28:33
【问题描述】:

我正在尝试将所有 http://www.example.com/* 网址重写为 https://www.example.com/,但某些页面除外。我可以让 catch all rewrite 正常工作:

RewriteCond %{SERVER_PORT} 80
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

但是,如果我尝试在 catch all home page forward 之前添加异常,它们将不起作用。另外,如果我只是尝试自己添加它们,(注释掉前面的规则),它们不起作用。

RewriteCond %{SERVER_PORT} 80
RewriteRule ^/?products/(.*) https://%{SERVER_NAME}/products/$1 [R,L]

所以,我想对网站上的一些页面进行简单的 http->https 重写。 例如,如果有人去http://.../products,他们应该被转发到https://.../products

另外,我想确保我的任何规则都适用于 www.example.com/productsexample.com/products

【问题讨论】:

  • 你的规则是什么?这两个都对我有用。一定有一些订购问题。
  • 这些是 .htaccess 文件中的最后几行。我是否需要展示我在这些之上的其他规则?

标签: apache .htaccess


【解决方案1】:

替换为

RewriteCond %{SERVER_PORT} 80
RewriteRule ^products/(.*)$ https://%{SERVER_NAME}/products/$1 [R,L]

【讨论】:

  • 我不知道发生了什么。我知道这应该有效,但它没有。这是一个 Drupal 网站,所以也许它不会。我一生无法理解的是为什么一揽子重写有效而具体的重写无效。
  • 规则必须在 drupal .htaccess 文件的顶部,在 drupal 规则之前。如果 products 目录存在,则带有规则的 .htaccess 文件必须在父目录中。
  • 很公平。我会更深入地研究并报告我的发现,或者只是接受这个答案是正确的,因为据我所知。
  • 就是这样!非常感谢,这条规则需要先行!
猜你喜欢
  • 2011-09-19
  • 2012-02-28
  • 2013-01-22
  • 2014-03-11
  • 1970-01-01
  • 2014-11-29
  • 1970-01-01
  • 2019-04-14
  • 1970-01-01
相关资源
最近更新 更多