web-dev-qa-db-ja.com

IIS 7.5、複数のアプリケーションプール、およびURLの書き換え(403.18-禁止)

IIS 7.5を構成して、403.18エラーに遭遇することなく同じサイトの異なるアプリケーションプールにURL書き換えを実行する方法はありますか?

IIS 6でHelicon ISAPI Rewrite 3を使用しています。チャームのように機能しています。ルートレベルの「アプリケーション」は、独自のアプリケーションプールの下で実行されています。IIS 6そのアプリケーションプールから他の4つのアプリケーションプールのいずれかにURLを書き換えることに問題はありません。しかし、同じサーバー構成情報をIIS 7.5にコピーすると、URL他のアプリケーションプールへの書き換えは、「403.18-禁止」エラーで失敗します。

奇妙な点は、IIS 6が(少なくとも、サイトのサービス構成ダイアログを見ると、私が知る限り)実行されていないことです。IIS 5エミュレーションモードなので、書き換えによって403.18エラーがスローされないので、somethingは異なる必要があります...

ところで、私たちはHelicon ISAPI Rewriteと結婚していません。別のモジュールまたはメソッドを使用して現在の書き換え構成ルールを保持する別の方法がある場合は、それを使用して満足します。

7
Jerry Hewett

IISでは、あるアプリケーションから別のアプリケーションにリクエストをルーティングするだけではできません。アプリケーションが分離されているため、403エラーが発生します。

ISAPI_Rewrite、Ape、ARRのいずれかを使用してリクエストをプロキシできます。ローカルのHTTPリクエストを使用してリクエストが別のアプリケーションに渡されるため、問題はありません。このソリューションは非常に安定していますが、パフォーマンスが低下します。

リダイレクトはサーバーへの2つの要求を生成するため、おそらくここではオプションではありませんが、接続パフォーマンスが遅いユーザーによって要求が生成されるため、大幅に低下する可能性があります。

6
Yaroslav

実際、これはURL書き換えでは不可能ですが、本当にやりたい場合は、ARR(Application Request Routing)を組み合わせて使用​​することもできますが、実際には完全に新しいリクエストを行うことに注意してください。言い換えると、ホスト名とすべてを含む完全なURLを使用するように書き換える必要があるため、それ自体に新しいHTTPリクエストを発行するプロキシとして機能します。これは大きなオーバーヘッドであるため、アプリケーションにとって重要な場合のみです。

もちろん、Scott Forsythがすでに述べたように、他のオプションはリダイレクトを使用することです。

IIS7では、Microsoftの新しいURL Rewriteコンポーネントもサポートされていません。同じ問題が発生します。

IIS6ではアプリプール全体で書き換えが可能であることを覚えていませんでした。リダイレクトではなく書き換えを行っていますか? IIS7ではリダイレクトが機能します。

Heliconにwww.isapirewrite.comで質問します。彼らは彼らのフォーラムで反応が良いです。おそらくISAPIモジュールはw3wp.exeプロセス内に完全に存在するため、リクエストを別のアプリプールに引き渡すことができません。

質問をする他の場所は http://forums.iis.net/ です。 IIS開発チームはいくつかの投稿に応答し、IIS7への移行時にISAPI Rewriteの機能でさえ変更された理由の詳細を提供する場合があります。

1

以前はIIS6でISAPI Rewrite 3を使用していましたが、IIS7.5に移行したときにHelicon APEに切り替えたところ、Rewriteよりもうまく機能しました。データベースのデータを使用して、URLを書き換えることができます。

0
Kelton