問題タブ [rewritepath]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
615 参照

php - .NET HttpModule RewritePath 呼び出しのターゲットが PHP ファイルの場合、$_POST 配列は空です

カスタム HttpModule を使用して URL を書き換える IIS 6 で実行されているアプリケーションがあります。Context.RewritePath の宛先が .php ファイルである場合を除いて、これはうまく機能します (うまくいきました)。PHP ファイルは期待どおりに実行されますが、$_POST コレクションは空であり、書き換えられた URL に送信されたフォームにアクセスできません。Request.Form コレクションが正常であるため、.aspx ファイルに書き換える場合、問題は存在しません。

したがって、私の質問には 2 つの部分があります。 $_POST コレクションに値が入力されていないのはなぜですか? 書き換え後に .php $_POST コレクションが正しく設定されるようにする方法はありますか?

コードの方法で示すことはあまりありません。簡単なものがあります:

HttpModule がリクエストの送信先を見つけたら。

編集: 興味深いことに、var_dump(file_get_contents('php://input'));PHP ファイル (ここで説明する方法) で行うと、フォームの内容が表示されます。したがって、データは PHP スクリプトに到達していますが、$_POST 配列には到達していません。

0 投票する
1 に答える
125 参照

asp.net - 書き換えを行うためにセッションにアクセスするにはどうすればよいですか?

HttpContext.Current.RewritePathこのメソッドを使用して、さまざまなバージョンのアプリケーションをさまざまな顧客に提供しようとしています。オブジェクトを見て、HttpContext.Current.Session誰がリクエストしているのかを知りたいです。奇妙なことに、ハンドラーでこれを見に行くとBeginRequest、セッションは常にnullを示しています。私は他のさまざまなイベントを試しましたが、運がありませんでした。これについて何かアイデアはありますか?

0 投票する
2 に答える
298 参照

c# - .NET での URL 書き換えに関する質問

実際の URL はhttp://www.example.com/site.aspx?site=google.com です。書き換え結果をよりわかりやすくしたい。次のように: http://www.example.com/google.com C# コードでは、サードパーティのライブラリを使用したくありません。RewritePath メソッドまたはいくつかのコードのみを使用します。

0 投票する
1 に答える
551 参照

c# - WCF サービスへのポスト データのパス書き換え

単純な WCF サービスが定義されていると仮定しましょう

URLを書き換えるシンプルなhttpモジュール

したがって、メソッドへの各呼び出しは、パラメーターを使用して TestMe メソッドに変換されます

ここでリクエスト全体を投稿したいのですが、

この呼び出し RewritePath では、サービス リクエスターによって投稿されたストリームが渡されず、回避策を見つけることができませんでした。URLを書き換えて、元のリクエストバイト配列を転送し続けるにはどうすればよいですか?

0 投票する
4 に答える
2976 参照

asp.net-mvc - MVC でビューを返す代わりに RewritePath

RedirectToAction または Redirect の代わりに別のビューを表示するパスを書き換える方法はありますか? URL を変更したくありませんが、通常の RewritePath を「返す」ことができないことに注意してください。そのため、アクションは実際にはその後も続きます!

更新: F5 を実行すると、stackoverflow (ProcessRequest を使用) で循環するものを使用するときに気付きましたが、直接アクセスすると、「'HttpContext.SetSessionStateBehavior' は 'HttpApplication.AcquireRequestState' イベントの前にのみ呼び出すことができます。上げられます。」これは、IIS セットアップで何か不足していることを意味します。それは何ですか? :s

[更新]これを明確にするために、アクションまたはビュー名ではなく「url」を書き直す必要があります。古き良き RewritePath(url) のように、URL でなければなりません。

0 投票する
0 に答える
390 参照

iis - HttpContext.RewritePath がビルトイン IIS gzip を壊す

こんにちは。

HttpContext.RewritePathリクエストとホストに応じて、リクエストを内部サイトフォルダーに送信するために使用しています。

問題: IIS によってキャッシュされ GZIP された静的ファイルの RewritePath を要求する要求を行うと、元の圧縮されていないファイル コンテンツとContent-Encoding: gzipヘッダーが返され、「コンテンツのデコードに失敗しました」というエラーが発生します。しかし、同じリクエストを完全なディレクトリ パスで行うと (その場合、RewritePath はコードでスキップされます)、gzip された正しいコンテンツがContent-Encoding: gzip.


例:
エラーの状況:
Request url: localhost/lib/ext_3.4.0/resources/css/ext-all.css
Request path is rewriteed using HttpContext.RewritePath to:localhost/_sites/mainSite/lib/ext_3.4.0/resources/css/ext-all.css

最初の応答は gzip されません - 通常の IIS の動作です。ctrl+F5 を押すと、「コンテンツのデコードに失敗しました」というエラーが表示されます。Fiddler2 を使用すると、応答コンテンツが gzip されておらず、Content-Encoding: gzipヘッダーが含まれていることがわかります。

エラーのない状況:
リクエスト url:localhost/_sites/mainSite/lib/ext_3.4.0/resources/css/ext-all.css
リクエスト パスは必要ないため、書き換えられません。

最初の応答は再度 gzip されません。ctrl+F5 を押すと、通常のファイル コンテンツが表示されます。Fiddler2 を使用すると、応答コンテンツが gzip され、サイズが 5 分の 1 になり、Content-Encoding: gzipヘッダーが含まれていることがわかります。


RewritePath は捨てられず、IIS gzip が必要です。彼らを友達にする方法はありますか?

0 投票する
2 に答える
1779 参照

asp.net - 画像の URL 書き換え

Application_BeginRequest を使用して、Web サイト上の画像の短い URL を有効にする方法を見つけようとしています。

現在、画像を開くには、次のような完全な URL を使用する必要があります。

短い URL を使用して画像にアクセスできるようにしたい:

ViewImage.aspx は、データベースから画像を動的に取得します。

RewritePath メソッドを使用する必要があると仮定します。しかし、どのように正確に?

0 投票する
0 に答える
424 参照

asp.net - 静的ファイルで HttpContext.RewritePath() を使用する

HttpContext.RewritePath() を使用して、パスを静的ファイルに書き換えます。これは、サーバー上の静的ファイルの場所を仮想化できるようにするためです。

これを行うと、IIS はファイルのコンテンツを圧縮しないことがありますが、gzip エンコーディングを http 応答ヘッダーに挿入することで、奇妙な動作をしているようです。これが発生すると、ブラウザーは平文データを圧縮解除しようとするため、静的ファイルを適切に解析できません。

私たちは周りを見回して、これについて話しているいくつかのスレッドを見つけましたが、この問題を回避する方法、または静的ファイルのパスの書き換えを許可しない理由について満足のいく答えを見つけることができませんでした.

静的ファイルのパスを書き換えることはできませんか?

この問題について見つけたいくつかのページを次に示します。

IIS7 の GZip 圧縮が機能しないが、コンテンツ エンコーディング ヘッダーが gzip に設定されている

HttpContext.RewritePath がビルトイン IIS gzip を壊す

0 投票する
0 に答える
275 参照

jquery - スクリプトサービスは、HttpContext.RewritePath()を使用すると、VS開発サーバーで405を返しますか?

非常に具体的な問題に直面しているようです。質問が長かったことをお詫びします。

に物理的に常駐するスクリプトサービスがあります/somepath/service.asmx。URL書き換えモジュール(UrlRewritingNet v2.0)を使用し/service.asmxて、物理的な場所からの通話を書き換えています。このモジュールは.NetのHttpContext.RewritePath()機能を使用します。

私のサービスはメソッドを公開dosomethingし、私のページにはスクリプト呼び出しがあります:

このコードをIISで実行すると、ステータスコード200が返されますが、VS開発サーバーでこのコードを実行すると、が返されます405 Method Not Allowed。スタックトレースからのエラーメッセージは次のとおりです。

このメッセージでは、パスが正しくルーティングされているように見えることに注意してください。

/somepath/service.asmx/dosomething興味深いのは、ajax呼び出しを完全なURLに変更すると、IISとVS開発サーバーの両方が正常に機能するため、これがルーティングの問題であるとほぼ確信しています。

その405を回避する方法はありますか?

0 投票する
0 に答える
553 参照

iis - IIS 7.5 統合モードで RewritePath が機能しない

URL 書き換えのために HttpModule で HttpContext.RewritePath を使用すると問題が発生しました。

環境: Windows Server 2008 R2、IIS 7.5 統合モード、.Net 4.0 私のプロジェクトでは、ほとんどの URL が同じ aspx ページ (Handler.aspx) に書き換えられます。aspx ページは、URL に基づいてさまざまなことを行います。

例:

"/en/abc/" が Handler.aspx に書き込まれます。[ページ出力: This is abc]

"/en/test/" が Handler.aspx に書き込まれます。[ページ出力: これはテストです]

「/en/test/a.html」は Handler.aspx にも書き込まれます。[ページ出力: これはテストです]。文字列 "test" のみをチェックし、文字列 "/a.html" を無視すると、出力は URL "/en/test/" と同じになります。また、a.html が wwwroot フォルダーに存在しない場合、URL はテストに適していません。

htm/html 拡張子を含む 2 つ以上のリクエストが同時に来ると問題が発生しました例: "/en/test/a.htm" または "/en/test/a.html"

その後、HttpContext.RewritePath はどのリクエストに対しても機能しません。Handler.aspx は呼び出されなくなり、入力した URL に関係なく、ページ出力は常に「This is test」になります。問題が発生したときの HTTP ステータス コードは 200 です。また、実際の aspx ページ (Handler.aspx) にアクセスすると、同じ内容の「This is test」も表示されます。サーバー側のキャッシュのようです。この問題は、IIS でアプリ プールをリサイクルすることで解決できます。

次の場合、問題は発生しません。

  1. これら 2 つのリクエストには少し時間をおいてアクセスしてください。たとえば、最初に「/en/test/a.html」にアクセスして 3 ~ 5 秒待ってから、「en/test/a.html」に再度アクセスします。すべて正常に動作します。

  2. IIS パイプラインを統合モードからクラシック モードに変更します。「/en/test/a.html」にアクセスすると、IIS 404 ページが表示されます。

  3. HttpContext.RewritePath の代わりに Server.Transfer を使用すると、すべて正常に動作します。

  4. URL に .php、.jsp、.xml が含まれていても問題は発生しません

その根本原因を見つけなければなりません。この問題の原因として考えられる理由はありますか?