【问题标题】:Rewrite Rule to Work on HTTP and HTTPS重写规则以在 HTTP 和 HTTPS 上工作
【发布时间】:2012-02-04 07:18:48
【问题描述】:

我有这个简单的重写规则,它在 http 下可以正常工作:

RewriteCond %{HTTP_HOST} ^www\.siku-siku\.com$
RewriteRule ^/work/all.html  /portfolio/ [L,R=301]

但是,当我在 https 上时,该规则并未生效。我将规则集修改为以下但无济于事。

RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^www\.siku-siku\.com$
RewriteRule ^/work/all.html  /portfolio/ [L,R=301]

如何使该规则同时适用于 httphttps?如果我需要提供更多信息,请告诉我。

【问题讨论】:

  • 它是 .htaccess 还是 vhost?如果是虚拟主机,只需将重写规则放在一个单独的文件中,并将其源到两个虚拟主机中
  • 这是一个虚拟主机。 @fge:您是指非ssl 和ssl 的vhost 吗?抱歉,这听起来可能很基础,但我刚刚开始熟悉 Apache mod-rewrite。
  • 嗯,mod_rewrite 指令和其他指令一样,如果你将它们放在另一个文件中,并且 Include 这个文件来自另一个文件,它会执行此操作。所以是的,只需将规则写入另一个文件中,该文件同时包含在 SSL 和非 SSL 虚拟主机中(删除 HTTPS 上的 RewriteCond)。
  • +1 感谢您的进一步澄清。

标签: apache http mod-rewrite https


【解决方案1】:

Apache 使用不同的虚拟主机进行 ssl 配置:

<IfModule mod_ssl.c>
  <VirtualHost _default_:443>
  RewriteEngine on
  RewriteCond %{HTTP_HOST} ^www\.siku-siku\.com$
  RewriteRule ^/work/all.html  /portfolio/ [L,R=301]
  ...
  </VirtualHost>
</IfModule>

此链接有一个在 Debian 上使用 SSL 配置 Apache 的示例,但应该很容易推断到您使用的任何平台http://www.debian-administration.org/articles/349

【讨论】:

    猜你喜欢
    • 2016-12-29
    • 2012-12-29
    • 2015-08-10
    • 2013-06-02
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多