2

古いブログのURLを新しいブログのURLにリダイレクトする必要があります。IDフィールドはキークエリ文字列であり、クエリ文字列内の他のすべては無視する必要があります。高レベルのロジック:

古い大文字と小文字を区別しないURLが一致する場合:/Blog/Post.aspx?+ URLID=33のクエリ文字列の任意の場所にリダイレクトします:/newblog/newurl/

現在の正規表現コード:(?i:/Blog/Post.aspx)|(\?)|(?i:id=33)

Success: /Blog/Post.aspx?id=33
Fails: /Blog/Post.aspx?ignore=me&id=33
Fails: /Blog/Post.aspx?ignore=me&id=33&ignoreme=too

ignore=me潜在的な不明なクエリ文字列とを無視し、クエリ文字列ignoreme=tooにが含まれている場合にリダイレクトするREGEX一致を考え出すにはどうすればよいID=33ですか?

答えてくれてありがとうm.buettner!

4

2 に答える 2

2

今のところ、URLだけ にある場合、または疑問符しかない場合でも、リダイレクトすることもできます。それはあなたが望むものではないと思います。あなたはおそらくこのようなものを探しています:ID=33

(?i:/Blog/Post.aspx\?.*id=33(?!\w)).*

/Blog/Post.aspx?これには、が検出されるまで任意の文字が必要であり、許可されid=33ます。

これを使用している言語によっては、先読みを使用することもできます。これにより、順序がわからない可能性のあるさまざまなパラメーターを簡単に確認できます。

(?i:/Blog/Post.aspx\?(?=.*id=33(?!\w))).*

これは、次のように簡単に拡張できます。

(?i:/Blog/Post.aspx\?(?=.*id=33(?!\w))(?=.*another=requirement(?!\w))).*

最初のアプローチでは、両方の可能な注文に対して2つの選択肢を追加する必要があります。

編集: 3つの解決策すべてに関する警告:数字の後には単語以外の文字(文字、数字、またはアンダースコア以外のもの)が必要です。...id=33+34...これは、やのような場合に誤検知が発生することを意味し...id=33%2F...ます。しかし、これらはそもそもWordpressによって生成されるべきではありません。

于 2012-11-07T21:50:34.017 に答える
0

Ops、URLの一般的な属性に一致する一般的な答えを持ってくるつもりでした!さて、あなたがそれを必要とする場合に備えて、私はそれをここに残すつもりです

デモ

(?:(id|noignoreme|dontignoreme)=([^&\n]+)(?:\n|&|$))

これにより、受け入れたいパラメーターを追加でき、group1(オプション)およびgroup2(そのオプションのテキスト)として返されます。

その後、あなたはID = 33 then do that; else do thot;

于 2012-11-07T22:08:53.117 に答える