2016-04-06 6 views
0

UrlRewriting.net設定ファイルを使用してリダイレクトを処理する、ホストされたUmbracoサイトがあります。クライアントはサイトで購入して指し示した約60のランディングドメインを持っていますが、ドメインの後ろにあるすべてのランディングドメインを実際のドメインにリダイレクトしたいとします。この例ではhttp://www.mainsite.com/Regexは特定のドメインを除外します

私は以下の正規表現を使用しています。これは、メイン・サイト以外のものをメイン・サイトにリダイレクトし、ページを追加します。

<add name="GlobalRedirect" 
      virtualUrl="https?:\/\/((?!www\.mainsite\.co\.uk).*)\/(.*)" 
      rewriteUrlParameter="ExcludeFromClientQueryString" 
      destinationUrl="http://www.mainsite.co.uk/$2" 
      redirect="Domain" 
      redirectMode="Permanent" /> 

http://www.anything.co.uk/a-page正しくhttp://www.mainsite.co.uk/a-pageにリダイレクトなっています。

しかし、http://www.anything.com/subpage/another-pagehttp://www.mainsite.com/another-pageにリダイレクトされ、/subpage/がありません。

エラーは否定的な先読みの外にありますが、解決する方法はありません。

ご迷惑をおかけして申し訳ありません。

+0

最初のグループの '。*'を削除するとどうなりますか?否定先読みの直後ですか? – elolos

答えて

0

あなたの正規表現はあまりにも貪欲に一致しています。 RegExを次のように変更した場合:

https?:\/\/((?!www\.mainsite\.co\.uk).*?)\/(.*) 

ドメインの後ろに最初のスラッシュが表示されるまでは一致します。したがって、あなたの例では、$ 2にサブページ/別のページが含まれているはずです。

正規表現の作成とテストにはExpressoというツールを強くお勧めします。 RegExが何をしているのかを分析し、それらに対してテストを実行することができます。

関連する問題