【问题标题】:Force www with .htaccess behind varnish在清漆后面使用 .htaccess 强制 www
【发布时间】:2016-11-23 16:34:40
【问题描述】:

我想强制使用 varnish 和 apache 后面的 www 域。

安装 varnish RewriteRule 后不会将 domain.com 重定向到 www.domain.com

我有:

  • apache 2.4.7
  • 清漆 3.0.5
  • 多个域的多个虚拟主机

在我安装 varnish 之前,我的 .htaccess 指令运行良好。

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

我已经尝试寻找解决方案,但没有成功。

在我的 vcl 中,我只配置了这个:

backend default {
    .host = "127.0.0.1";
    .port = "8080";
}

所有其他代码都被注释了。

【问题讨论】:

  • 你能发布你的 VCL 吗?
  • 我在帖子中添加了 vcl。基本上我只配置了后端。

标签: apache .htaccess redirect varnish


【解决方案1】:

更新你的规则:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain\.com
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=permanent,L]

不理想,因为它对域进行硬编码,但应该可以工作:)

理由是HTTP_HOST 包含端口号,而您的重定向无法处理它。

或者,在 VCL 中使用 HTTP_HOST 变量去除端口号:

sub vcl_recv {
    # Normalize the header, remove the port 
    set req.http.host = regsub(req.http.host, ":[0-9]+", "");
}

【讨论】:

  • 感谢您的回答。不幸的是,以上都没有奏效。实际上我希望对域进行硬编码应该可以工作,但它没有。
猜你喜欢
  • 1970-01-01
  • 2013-05-31
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 2013-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多