2011-11-07 8 views
0

興味深いRewriteRuleがあります。正規表現を作成するのは不思議です。新しいページへのURL、正規表現に基づいた.htaccess用のRewriteCond RewriteRule

要するに、2番目以降のURLを調べるには、内容に基づいて、可能であれば進むことができます。

これら2つのルールまで合計:

  1. リダイレクト秒後の文字列は/長い7つの文字
  2. ここ

されている例を超える場合/秒の後の文字列は、任意の文字

  • リダイレクトが含まれている場合:

    http://www.mysite.org/section/subsection/2011(OK、何もしない)

    http://www.mysite.org/section/subsection/2011-11(OK、何もしない)

    http://www.mysite.org/section/subsection/2011-11-09(OK NOT、リダイレクト)

    http://www.mysite.org/section/subsection/2011-11-W1(OK NOT、リダイレクト)

    書き換えルールと書き換えのCondで

  • 答えて

    1

    を助けてください、私はベースあなたの例を次の正規表現ではなく、最後の '/'の後ろのすべてを2番目のものの代わりに分析したようです。平易な英語で

    /[^A-Za-z]{1,7}$ 
    

    、この正規表現は「/」に続き、1-7非アルファベットの文字を含む文字のグループにマッチします。最後の '/'にのみ一致するようにするには、行末に一致する '$'を追加しました。

    また、URLを扱っているため、「/?」を追加することもできます。最後に '/'がある場合は '$'の前に。

    /[^A-Za-z]{1,7}/?$ 
    

    これがあなたの質問に答えることを願っています。

    0

    レーンアーゼンが指摘するように、あなたの例とルールは一致しません。あなたの例を挙げて、ルールが3番目のパスセグメントに適用されるべきであることを意味し、次のことを提案します。リダイレクトの宛先が異なるかどうかは、どのルールに一致するかによって異なります。私は違うと思った。

    RewriteEngine on 
    # redirect if any letter is contained in 3rd part of path 
    RewriteRule ^([^/]+/){2}.*[a-zA-Z] http://www.bbc.co.uk [R=permanent,L] 
    # redirect if there are more than 7 characters in 3rd part of the path 
    RewriteRule ^([^/]+/){2}.{7,} http://www.ibm.com [R=permanent,L] 
    
    関連する問題