2016-08-01 6 views
0

ニスにURLを分割したり、URL構造を変更する方法はありますか?ニス分割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/ 

下にリダイレクトする私は私が記事のIDを取り除くことができ

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 

ことを行うためにVCLファイル内のいくつかの行を追加しました

set req.http.xrul=regsub(req.http.xrul,"(\d+)",""); 

ちょうどのみ記事ID

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

は、ワニスのサポートはしてURLを分割してい得ることができません「 - 」パターンので、私は、URLを再設計だろうか?または、regsubでarticleIDのみ取得できますか?

+0

拡張子を削除しないでお試しください: 'set req.http.xrul = regsub(req.http.xrul、"/sport /(\ d +) - (。* - )([^ - ] +)\。 "、 "/ \ 2sport- \ 1。") ' –

答えて

0

これは達成したいことですか?

これは、指定した例に合わせて調整された作業コードです。セクションの配置は1レベルです。

あなたはセクションのより多くのレベルをサポートする場合は、あなただけに/正規表現ビットを調整し、交換する必要がある - 第二段階で:

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

たぶん、あなたは1つのより多くの洗練を必要とします。 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); 
} 

は、この情報がお役に立てば幸いです。