Rewrite Module 2.を使用してURLの書き換えを試してみましたが、うまくいきませんでした。私がやろうとしていることは、IIS(またはネットワーク上の別のサーバー上)でホストされている他のアプリケーションへのポート80でのWebアプリへのすべての呼び出しを書き換えることです。 IIS次のルールを作成しました:
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="site1/(.*)" />
<action type="Rewrite" url="http://localhost:7001/{R:1}" />
</rule>
</rules>
</rewrite>
静かですが、残念ながら機能しません。一方、アクションタイプをRedirect
に変更すると、正常に動作します。
何が問題でしょうか?
私は昨日同じ問題に出くわし、理解するのに長い時間がかかりました。
ここで重要なのは、書き換えアクションにhttp://
プレフィックスがあることです。これにより、Application Request Routingで処理する必要がある特別なケースになります。最初のステップは、Application Request Routingモジュールがインストールされていることを確認することです。このモジュールは https://www.iis.net/downloads/Microsoft/application-request-routing にあります。これがインストールされたら、IIS Webサーバー(Webサイトの1つ上のレベル))に移動し、Application Request Routingキャッシュ機能を開きます。右側のアクションから、Server.Proxy.Settings
をクリックし、[プロキシを有効にする]チェックボックスがオンになっていることを確認します。これにより、URL書き換えタスクをApplication Request Routingに再ルーティングでき、リバースプロキシが外部リクエストに対して機能するはずです。
このアイデアは、2009年の優れたブログ投稿に基づいています。 http://ruslany.net/2009/04/10-url-rewriting-tips-and-tricks/
同じ問題を解決しようとしていたときに、この古い投稿を偶然見つけました。
解決しました!
IIS Services Managerの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>
最初のルールは、URLで文字列"product.php"
と"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」に書き換えて、リダイレクトの新しい場所を作成します。
MVCルーティングがリクエストを盗まないことを確認してください。それが起こらないようにするには、書き換えようとしているルートを無視してください:
RouteTable.Routes.Ignore("blog/{*pathInfo}");
刺激: https://sitecore.stackexchange.com/questions/3645/how-to-setup-a-reverse-proxy-with-sitecore
URLの書き換えで404エラーが発生しました。たぶん、あなたはそれが便利であるとわかるでしょう。 https://stackoverflow.com/a/47988082/578454 で確認してください