3

最近、PHP プラットフォームから Java ベースの新しいシステムに移行しました。新しいウェブサイトには、次のようなきれいな URL があります -

http://mysite.com/science/2013/03/22/universe-is-older-than-previously-thought

古いウェブサイトには -mysite.com/details.php?cid=37&id=239411 のような URL がありました

検索エンジンの結果については、/details.php?を含むこれらすべての URL をリダイレクトする必要があります。urlredirect.com と言ってください。これらの例https://www.varnish-cache.org/trac/wiki/VCLExampleRedirectInVCLを見ていて、Varnish 構成の redirect.vcl で次のように思いつきました。

vcl_recv 関数で -

 if(req.url~ "^/details.php?$" ) {
 error 301 "Moved Temporarily";
  }

しかし、vcl_error 関数には何が必要なのか混乱していますか? 今のところはこんな感じです-

  else if(obj.status == 301 && req.url~ "^/details.php?$"){
    set obj.http.Location = "http://bdnews24.com";
    return (deliver);
  }

私はそれが簡単だと思いますか?それでも、これを行った人と経験を共有することは素晴らしいことです.

4

2 に答える 2

5

vcl_error で同じことを繰り返さなくても、カスタム エラー コードを作成してそこにリダイレクト URL を送信する方がよいでしょう。簡単な例:

vcl_recv:

set req.http.x-Redir-Url = "http://newdomain.com" + req.url; 
error 750 req.http.x-Redir-Url;

vcl_error で:

if (obj.status == 750) {
    set obj.http.Location = obj.response;
    set obj.status = 301;
    return(deliver);
}
于 2013-03-25T10:36:17.273 に答える