2012-02-22 23 views
1

私はいくつかのテンプレートベースのWebサイトを実行しています。IIS上のweb.configを使用してdomain.com/somepageをdomain.com/default.asp?page=somepageに変換しますより高いレベルのディレクトリからのファイル。私はのようなルックスを使用していたルール:文字列が含まれていない限り、すべての文字を一致させてリダイレクト

<rule name="friendly-urls"> 
    <match url="^[a-zA-Z0-9_]+" /> 
    <conditions logicalGrouping="MatchAll" /> 
    <action type="Rewrite" url="default.asp?page={R:0}" /> 
</rule> 

問題は、各ウェブサイトはまた、そのアドレスを、モバイル版を持っているdomain.com/m/で利用可能、と道がリダイレクトが今設定されていることです何らかの理由でm /ディレクトリ内の何かに対して例外を作成する必要がありますが、これを達成するのに十分な正規表現やweb.configを理解できません。もし誰かが助けてくれたら、私はとても感謝しています。

答えて

0

私は、web.configファイルのルールに慣れていないんだけど、多分これは動作します、あるいは少なくとも、あなたは始める:

<rule name="friendly-urls"> 
    <match url="^([a-zA-Z0-9_]+/)?([a-zA-Z0-9_]+)$" /> 
    <conditions logicalGrouping="MatchAll" /> 
    <action type="Rewrite" url="{R:1}default.asp?page={R:2}" /> 
</rule> 

新しい正規表現が含まれているオプションの最初の試合(へ入力URLを分割スラッシュ)と必要な2回目の試合。最初の一致を出力URLの先頭に追加します。最初の一致がない場合(非モバイルURLの場合)、空の文字列の前に追加する必要があります。次に、2番目の一致が出力URLに通常どおり追加されます。 "somepage" を考える

は、それが "M/somepage" を考える

を "Default.aspファイル?ページ= somepage" を生成する必要があり、それが生成しなければならない "M/default.aspのを?ページ= somepage"

正規表現以外のものをテストすることはできませんが、これが役立つことを願っています!