29

Rewrite Module 2.0を使用して URL の書き換えを試してみましたが、うまく動作しませんでした。私がやろうとしているのは、ポート 80 での Web アプリへのすべての呼び出しを、IIS でホストされている (またはネットワーク上の別のサーバーで) 他のアプリケーションに書き直すことです。IIS が提供する GUI を使用して、次のルールを作成しました。

<rewrite>
    <rules>
        <rule name="ReverseProxyInboundRule1" stopProcessing="true">
            <match url="site1/(.*)" />
            <action type="Rewrite" url="http://localhost:7001/{R:1}" />
        </rule>
    </rules>
</rewrite>

非常にシンプルですが、残念ながら機能しません。一方、アクションタイプを に変更するとRedirect、正常に動作します。

何が問題なのですか?

4

4 に答える 4

3

同じ問題を解決しようとしていたときに、この古い投稿に出くわしました。

解決しました!

IIS Services Manager の Rewrite URL 機能を使用して、分かりやすい URL ルールを作成しました。

これは問題なく機能し、web.config ファイル (www ルート) のルールを見ると、リダイレクトするルールが 1 つと、書き換えるルールが 1 つ示されていました。

これを 1 試合に合わせて編集しました。次に、このコードを複製して、それぞれの製品 ID を編集しました。以下の例:

<rule name="RedirectUserFriendlyURL1" stopProcessing="true">
    <match url="^product\.php$" />
    <conditions>
        <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
        <add input="{QUERY_STRING}" pattern="^id_product=\b35\b" />
    </conditions>
    <action type="Redirect" url="990mm-bohemia-cast-iron-electric-radiator" 
            appendQueryString="false" />
</rule>

"product.php"最初のルールは URL 内の文字列を検索し、現在存在しないもの"id_product=35"にリダイレクトします。"990mm-bohemia-cast-iron-electric-radiator"その後(下記参照)

<rule name="RewriteUserFriendlyURL1" stopProcessing="true">
    <match url="^\b990mm-bohemia-cast-iron-electric-radiator\b" />
    <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
    </conditions>
    <action type="Rewrite" url="product.php?id_product=35" />
</rule>

このルールは、"product.php?id_product=35"ビットを「990mm-bohemia-cast-iron-electric-radiator」に書き換え、リダイレクトの新しい場所を作成します。

于 2013-06-11T08:18:41.640 に答える