web-dev-qa-db-ja.com

IISリバースプロキシがスラッシュなしで失敗する

IIS、URL書き換えがApacheTomcatのリバースプロキシとして機能しています。

example.com/app/はexample.com:8080/app/にリダイレクトします。ポート80は、同じサーバー上のポート8080にリダイレクトします。

Example.com/app/にアクセスすると、期待どおりに機能します。ただし、example.com/app(末尾のスラッシュなし)にアクセスすると、404エラーが発生します。

インバウンドルールに一致するパターンは^app/(.*)です。次に、アクションはURLに書き換えますhttp://127.0.0.1:8080/app/{R:1}

末尾のスラッシュなしでこれを機能させる方法についての提案はありますか?

1
Ryan

私は同様の問題を抱えていて、2つのルールを作成することでそれを修正することができました

  1. 301リダイレクト

検索パターン:^ app $

リダイレクトURL:app /

  1. リライト

検索パターン:^ app /(。*)

uRLを書き換えます: http://127.0.0.1:8080/app/ {R:1}

1
Thomas

Thomasの答えを詳しく説明するために、ルールが作成された後の構成ファイルは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <clear />
                <rule name="ReverseProxyInboundRule2" stopProcessing="true">
                    <match url="^app$" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
                    <action type="Redirect" url="app/" />
                </rule>
                <rule name="ReverseProxyInboundRule1" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
                    <action type="Rewrite" url="http://localhost:8080/{R:1}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
0
Lanklaas