9

http://ruslany.net/2009/04/10-url-rewriting-tips-and-tricks/から URL を書き換えても、サイトの URL の末尾のスラッシュを削除できません 。

とてもシンプルなはずなのに、本当にイライラしますが、私の試みは何の結果ももたらしませんでした.

テスト ディレクトリを作成し、desktops.aspx という名前のファイルと、desktops というサブ フォルダーを追加しました。

サブディレクトリ「/test/desktops」がなくても、デフォルトのドキュメントをdesktops.aspxを見るように設定しているため、正常にロードされます。

サブフォルダーが作成され、まだ「/test/desktops」を参照している場合、スラッシュを強制してサブディレクトリを調べます。

なぜIISは最初にファイルを探してからサブディレクトリを探すはずなので、これを行うのですか? サーバー側にスラッシュを強制的に戻す設定はありますか?

URL 書き換えスニペット:

<rule name="SEO - Remove trailing slash" stopProcessing="false">
<match url="(.+)/$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_METHOD}" pattern="GET" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Rewrite" url="_{R:1}" />
</rule>

どんな助けでも大歓迎です

4

3 に答える 3

9

タイプのアクションを使用してRewriteいますが、Redirect.

構成を次のように変更します。

<rule name="SEO - Remove trailing slash" stopProcessing="false">
  <match url="(.*)/$" />
  <conditions>
    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
  </conditions>
  <action type="Redirect" url="{R:1}" />
</rule>

url="(.+)/$"に変更する必要もありますurl="(.*)/$"

ヒント:

パターンをテストする最良の方法は、IIS テスト パターン ツールを使用することです。
Web サイトのルートで -> URL 書き換え -> 空のルールを作成 -> テスト パターンをクリックします。

于 2013-02-11T17:16:50.763 に答える
1

私はこれと同じ問題を抱えていましたが、ここに私が見つけたものがあります。

私の意図は、MVC Web サイトでこのルールを使用することでしたが、本番環境でテストしたくなかったため、たまたま Web フォーム asp.net である、既にセットアップされているサイトでルールをテストしました。

私はあなたと同じ問題に遭遇しました。www.example.com/test に移動すると、ルールが適用されていても www.example.com/test/ にリダイレクトされます。

そのため、要求された URL がファイルまたはディレクトリであるかどうかを確認する条件に気付き、それらを削除しました。

www.example.com/test/ に移動すると、www.example.com/test にリダイレクトされます。わーい!いいえ。IIS は自動的に別のリダイレクトを www.example.com/test/ に追加し、リダイレクト ループが発生しました。ブー。

次に、この記事https://support.microsoft.com/en-us/kb/298408を見つけました。これは IIS 6 に関連していますが、明らかにまだ問題があります。

したがって、私は asp.net Web フォーム サイトにいるため、私の場合、/test は物理ディレクトリであり、IIS にはディレクトリの末尾のスラッシュを強制するものがあります。申し訳ありませんが、簡単にオフにする方法が見つかりませんでした。

でも!私の要件は、ディレクトリではない MVC と構成済みのルートに対するものでした。そのため、MVC Web サイトでもう一度試してみたところ、末尾のスラッシュを削除するリダイレクトは完全に機能しました。

私が最終的に得たルールは次のとおりです。

<rule name="RemoveDatSlash" stopProcessing="true">
    <match url="(.*)/$" />
    <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
    </conditions>
    <action type="Redirect" redirectType="Permanent" url="{R:1}" />
</rule>

お役に立てれば!

于 2015-09-09T00:29:10.553 に答える
0

私が抱えていた問題は、末尾にスラッシュがある PDF ファイルへのリンクだったので、IIS 6.1 を実行している Windows Server 2008 R2 でうまくいきました。

ルールが必要な Web サイトをクリックしてFeaturesビューを開きURL RewriteActionsセクション (右側のペイン) で を選択Add Rule(s)しますAppend or Remove the trailing slash symbol。ドロップダウンの次のウィンドウで、 を選択しますremove if exists

お役に立てれば。

于 2014-03-18T15:14:35.927 に答える