2017-04-03 6 views
0

質問hereは私の疑問に答えるようですが、IISのパターンテストに失敗し、regex101.comで無効とフラグが立てられます。RegexはIISのルートディレクトリにある.htmlファイルにマッチします。

サブドメイン(m.mydomin.com)でホストされている私のサイトのよりモバイルフレンドリーなバージョンにモバイルクライアントをリダイレクトしようとしていますが、(まだ)取得されていない他のスクリプトとフォルダがあります彼らのモバイルフレンドリー対応。 Manglementは、モバイル対応のサイトのセクションのクライアントのリダイレクトを開始することを決めました。

基本的に私は必要なもののみを発射する書き換えルールです:

  1. クライアントは
  2. リクエストはROOTで* .htmlのファイルのあるモバイルクライアントです。そこで、基本的

  • /index.htmlが
  • /somepage.html

は、モバイルクライアントのためにリダイレクト、しかしれるべき/someotherpage.html

    • /s
    • /script.php?omgwtfisgoingon =真

    がリダイレクトされないはずです

  • /some/dir/page.html omescript.php。ここで

    が正常に動作します私の現在のリダイレクトですが、任意のモバイルクライアントのためのすべてのページで火災:

      <rule name="Mobile Rewrite" patternSyntax="ECMAScript" stopProcessing="true"> 
           <match url=".*" ignoreCase="true" negate="false" /> 
           <conditions logicalGrouping="MatchAny" trackAllCaptures="false"> 
            <add input="{HTTP_USER_AGENT}" pattern="midp|mobile|phone" /> 
           </conditions> 
           <action type="Redirect" url="http://m.domain.com/{ToLower:{R:0}}" appendQueryString="true" redirectType="Found" /> 
          </rule> 
    

    私がチェック第二の入力とMATCHALLするルールを変更するには、それを更新する上で計画していました* .htmlファイルですが、正常に動作するように私の頭脳を包むことはできません。残念なことにこれらはhtmlファイルなので、コードレベルでこれをやっているわけではなく、IISによって行われなければなりません。

    最終IISのリダイレクトコードをお探しの方のための編集:

      <rule name="Mobile Rewrite" patternSyntax="ECMAScript" stopProcessing="true"> 
           <match url=".*" ignoreCase="true" negate="false" /> 
           <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
            <add input="{HTTP_USER_AGENT}" pattern="midp|mobile|phone" /> 
            <add input="{REQUEST_URI}" pattern="^\/[^\/]+\.html$" /> 
           </conditions> 
           <action type="Redirect" url="http://m.domain.com//{ToLower:{R:0}}" appendQueryString="true" redirectType="Found" /> 
          </rule> 
    
  • 答えて

    3

    私はそれでIISまたはリダイレクトについて何も知りませんが、あなたがしたいファイルを一致する正規表現は

    ^\/[^\/]+\.html$ 
    
    ですリンクされた答えで

    See it working here

    、それは、彼らが、う、少なくとも原因のregex10を\をエスケープされていないに見えました有効とはみなさないように1。

    +2

    '.html'の後ろに何もないことを確認するために、最後に' $ 'を追加したいかもしれません。 – jotaelesalinas

    +1

    更新された回答。 –

    +0

    驚くばかりの人、これは私の期待通りにうまくいった、ありがとう。投票し、受け入れられた答えとしてタグ付けされました。 – Caleb

    関連する問題