【问题标题】:varnish split url and change url清漆拆分网址并更改网址
【发布时间】:2016-12-06 09:56:09
【问题描述】:

有没有办法在 varnish 上拆分 url 或用它更改 url 结构。

我知道 regsub 或 regsuball 支持这一点,但在我的情况下它们还不够。

我想更改一个 url 并将其重定向到另一个域。

例如:

http://aaa.test.com/sport/99244-article-hyun-jun-suku-kapa.html?

重定向到下面的地址

http://m.test.com/article-hyun-jun-suku-kapa-sport-99244/

我在 vcl 文件中添加了一些行来做到这一点

set req.http.xrul=regsuball(req.url,".html","");  "clear .html"

set req.http.xrul=regsub(req.http.xrul,"(\d+)","\1"); find numbers --article ID =99244

我可以用

去掉文章ID
set req.http.xrul=regsub(req.http.xrul,"(\d+)",""); 

但不能只获取文章 ID

set req.http.xrul=regsub(req.http.xrul,"(\d+)","\1"); or any other method 

varnish 是否支持用“-”模式分割 url,因此我可以重新设计 url?或者我们可以只获取regsub的articleID吗?

【问题讨论】:

  • 尝试不删除扩展名:set req.http.xrul=regsub(req.http.xrul, "/sport/(\d+)-(.*-)([^-]+)\.", "/\2sport-\1.")

标签: regex url-redirection varnish regsub


【解决方案1】:

这是你想要达到的目标吗?

set req.http.X-Redirect-URL = regsuball(req.url,"^/([^/]*)/([0-9]+)-([^/]+)\.html$","http://m.test.com/\3-\1-\2");

这是为您提供的示例量身定制的工作代码,只是一个级别的部分放置。

如果你想支持更多级别的部分,你只需要稍微调整一下正则表达式并将 / 替换为 - 在第二步:

set req.http.X-Redirect-URL = "http://m.test.com/" + regsuball(regsuball(req.url, "^/(.*)/([0-9]+)-([^/]+)\.html$", "\3-\1-\2"), "/", "-");

也许您需要进一步改进。如果 URL 与您的模式不匹配怎么办? X-Redirect-URL 将与 req.url 的值完全相同。你肯定不想要重定向循环,所以我建议在 X-Redirect-URL 的开头添加标记字符然后测试它。

假设:

set req.http.X-Redirect-URL = regsuball(regsuball(req.url, "^/(.*)/([0-9]+)-([^/]+)\.html$", "#\3-\1-\2"), "/", "-");
if(req.http.X-Redirect-URL ~ "^#") {
    set req.http.X-Redirect-URL = regsuball(req.http.X-Redirect-URL, "#", "http://m.test.com/");
    return(synth(391));
} else {
    unset req.http.X-Redirect-URL;
}

对于所有情况,您都需要在 vcl_synth 中:

if (resp.status == 391) {
        set resp.status = 301;
        set resp.http.Location = req.http.X-Redirect-URL;
        return (deliver);
}

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-18
    • 2011-09-17
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 2016-01-27
    • 2015-03-04
    相关资源
    最近更新 更多