3

ブログを dasBlog から BlogEngine に移行中です。dasBlog では、私の URL は次のようになります。

http://pfsolutions-mi.com/blog/2008/03/08/Beyond-Compare.aspx

一方、BlogEngine では、私の URL は次のようになります。

http://pfsolutions-mi.com/blog/post/2008/03/08/Beyond-Compare.aspx

2 つの URL の唯一の違いは、BlogEngine の「post」サブフォルダーです。

現在、IIS URL Rewrite を使用して URL から WWW を削除しているので、サブフォルダーの追加を処理する別のルールを作成するのが最も簡単な解決策であると考えました。私はこのようなものを試しました。

ルール名="ブログリダイレクト" enabled="true" stopProcessing="true"

match url="^ブログ/([_0-9]+)/([_0-9]+)/([_0-9]+)/([_0-9a-z-]+).([_0- 9a-z-]+)$"

action type="リダイレクト" url="blog/post/{R:1}/{R:2}/{R:3}/{R:4}.{R:5}" redirectType="一時的"

ただし、古い dasBlog URL を入力すると、新しい場所にリダイレクトされません。代わりに、一般的な BlogEngine 404 エラー ページが表示されます。

注: すべてが機能していることがわかったら、redirectType を Permanent に変更する予定です。

4

1 に答える 1

1

一致する正規表現はこのように見えるべきではありませんか?

match url="^blog/([0-9]+)/([0-9]+)/([0-9]+)/([\w-]+)\.([a-z]+)$"

とにかく日付番号に下線は[_0-9a-z-]+なく、「Beyond-Compare」のような大文字は含まれていません。

url="^blog/digits/digits/digits/any-word-characters.lowercase-letters$"

次のようにさらに指定することもできます。

match url="^blog/([0-9]{2,4})/([0-9]{2})/([0-9]{2})/([\w-]+)\.([a-z]{3,4})$"

あなたが常に持っているという仮定に基づいて:

  1. 年は「08」または「2008」
  2. 「01」または「11」の月と日
  3. 3 つまたは 4 つの小文字で終わるファイル (htm、html、php、asp、aspx など)

編集:「\w+」にはハイフンが含まれていないと思うので、これを「[\w-]+」に変換する必要があります

于 2012-05-14T07:20:36.473 に答える