web-dev-qa-db-ja.com

IIS URL rewriteでディレクトリを除外する方法は?

Domain.com/index.phpと、domain.com/index.php?s =?をリダイレクトするわかりやすいURLルールがあります。リクエスト。 IIS webserver with the URL rewrite add-onを使用しています。

上記は正常に動作します。ただし、管理ディレクトリへのリクエストに問題があります...

また、(Ajaxを介して)データを取得または送信するために必要な場合があるdomain.com/admin/cloud/index.phpもあります。ルールがアクティブな場合、データは利用できません。上記のルールを削除すると、データが利用可能になります。

上記のURLルールを使用して、domain.com/admin/..の内部(または宛先)の他のすべてのリクエストを除外するにはどうすればよいですか?

これは私の現在のルールセットです:

<rule name="RedirectUserFriendlyURL1" stopProcessing="true">
    <match url="^index\.php$" />
    <conditions>
        <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
        <add input="{QUERY_STRING}" pattern="^s=([^=&amp;]+)$" />
    </conditions>
    <action type="Redirect" url="{C:1}" appendQueryString="false" />
</rule>
<rule name="RewriteUserFriendlyURL1" stopProcessing="true">
    <match url="^([^/]+)/?$" />
    <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
    </conditions>
    <action type="Rewrite" url="index.php?s={R:1}" />
</rule>

パス情報を含む多くの方法を試しましたが、成功しませんでした。多分誰かがヒントを与えることができますか?

ありがとう!

13
Arjen

見てみましょう ここ このルールを追加して、処理したくないリクエストが来たときに、それを無視して処理を停止することができます。

このルールが他の2つのルールの前に実行されるように、最初に配置する必要があります。

<rule name="block" stopProcessing="true">
    <match url="^admin/cloud/index.php$" />
    <action type="None" />
</rule>
29
Tasos K.