6

私はかなり長い間、次のことに苦労してきました。

デフォルトの URL:

examplesite.com/folder/about.cshtml

希望の URL:

examplesite.com/about

基本的に私は2つのことを達成したい:

  • 1 非常にコンパクトなコードでファイル拡張子を削除します。
  • 2 About ページを格納しているフォルダを削除します。

上記のすべてを達成するためのいくつかの珍しいルールを見つけましたが、IIS 8.0 でテストしたときにサイトをクラッシュさせる冗長なコードがほとんど含まれています。

そのため、誰かがコンパクトで私のニーズに合ったルールを共有できることを望んでいました. または、同じ結果の別のルール。

すべての貢献は大歓迎です:)

4

1 に答える 1

5

私はあなたのニーズを完全に理解しているとは確信していませんが、少なくともそれに近いものがあります. 最初のフォルダーとファイル拡張子を取り除きます (したがって、と にexamplesite.com/folder/about.cshtmlなります)。すべてのフォルダを取り除きたい場合は、 .examplesite.com/aboutexamplesite.com/folder/help/about.cshtmlexamplesite.com/help/about?

<rule name="Remove Directory and Extension">
    <match url="^(.*?)/(.*)\.cshtml$" />
    <action type="Rewrite" url="{R:2}" />
</rule>

アップデート:

わかりました、あなたが望むのは2つのルールの組み合わせだと思います:

<rules>
  <rule name="Redirect requests to friendly URLs">
    <match url="^(.*?)/(.*)\.cshtml$" />
    <action type="Redirect" url="{R:2}" />
  </rule>
  <rule name="Rewrite friendly URLs to phsyical paths">
    <match url="^(.*)$" />
    <action type="Rewrite" url="folder/{R:0}.cshtml" />
  </rule>
</rules>

最初のルールは、すべてのリクエストがフレンドリ URL に対するものであることを確認します。2 つ目は、フレンドリ URL を受け取り、それを物理パスに書き換えます。物理パスはfolder/[FRIENDLY_PATH].cshtml.

于 2013-02-21T23:13:00.607 に答える