問題タブ [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.
asp.net - Web.configクライアントのキャッシュ設定は、HttpContext.RewritePathパスによる書き換えには適用されません。
隠し内部サイトのシステムを使用しています。パスを非表示にするために、HttpContext.RewritePathを使用しています。新しい名前を生成する写真をアップロードするシステムもあり、写真は変更されません。そのような写真にはクライアントキャッシュを使用したいと思います。
ユーザーに表示されるサイトのURL:/files/autoupload/1/13/wufkjqr31028.jpg.[ps].jpg
サーバー上のHttpContext.RewritePathの後のURL:/_sites/_shared/files/autoupload/1/13/wufkjqr31028.jpg.[ps].jpg
「/_sites/ _shared/files」フォルダにクライアントキャッシュ設定のあるweb.configがあります。
「/files/autoupload/1/13/wufkjqr31028.jpg.[ps].jpg」URLが要求された場合、この設定はまったく適用されません。応答としてCache-Controlヘッダーはありません。
完全なURL「/_sites/_shared/files/autoupload/1/13/wufkjqr31028.jpg.[ps].jpg」が要求され、HttpContext.RewritePathがそれをスキップした場合、キャッシュ設定は機能します。
しかし、同じweb.configを使用してルートに「/ files」フォルダーを作成すると、キャッシュ設定は元の「/files/autoupload/1/13/wufkjqr31028.jpg.[ps].jpg」URLで機能し始めます。
したがって、web.configクライアントのキャッシュ設定は、最初に要求されたディスクパスによってのみ適用され、書き換えられたパスによっては適用されません。
ルートにフォルダを作成する以外にこれを修正する方法はありますか?
asp.net - 元の URL にクエリ文字列が含まれている場合、ASP.Net Context.RewritePath が機能しない
詳細ページの 1 つにわかりやすい URL アクセスを許可する IHttpModule を作成しています。ユーザーがhttp://xyx.com/hotels/123/hotel-name.aspxページを使用して詳細ページにアクセスしようとすると、IHttpModule の OnBeginRequest メソッドで書き換えルールが適用されます。
ここでは、Context.RewritePath("~/DetailPages/DetailPage.aspx", "", "Code=123") を使用してパスを "~/DetailPages/DetailPage.aspx" に変更するように書きました。ここで、123 は元の URL から取得したコードです。 .
元の URL にクエリ文字列が含まれていない場合、詳細ページが呼び出されるようになりました。しかし、ユーザーがhttp://xyz.com/hotels/123/hotel-name.aspx?show=advanceにアクセスしようとすると、書き換えコードが として実行されContext.RewritePath("~/DetailPages/DetailPage.aspx", "", "Code=123&show=advance")
ます。ここで、「/hotels/123/hotel-name.aspx」ページが存在しないというエラーが表示されます。
Context.RewritePath
" " メソッドを呼び出す前後に、Context.Request
以下に示すオブジェクトから詳細を取得しました。元の URL にクエリ文字列がない場合、どちらも完璧で同じに見えます。ただし、元の URL にクエリ文字列が含まれている場合、"Context_Error" (このリクエスト実行のエラーをリッスンするイベント) メソッド内で、取得するServer.GetLastError()
と "/hotels/123/hotel-name.aspx" ページが存在しません。
Context.Request
以下のオブジェクトからのトレースの詳細を参照してください。肯定的な結果が得られずにすでに 8 時間を費やしているため、あなたの助け/意見を歓迎します。
--------------------------- 前 - RewritePath 呼び出し ------------------- --------
RawUrl : - /Hotels/123/hotel-name.aspx?a=b
AppRelativeCurrentExecutionFilePath : - ~/Hotels/123/hotel-name.aspx
CurrentExecutionFilePath : - /Hotels/123/hotel-name.aspx
パラメータ: - a=b&__utma=221736730.1213284380.1356606190.1356674469.1356687004.4.....(Windows+NT+5.1%3b+rv%3a7.0.1)+Gecko%2f20100101+Firefox%2f7.0.1
パス: - /Hotels/123/hotel-name.aspx
PhysicalPath : - D:\AppRoot\Hotels\161\hotel-name.aspx
URL : - http://xyz.com/Hotels/123/hotel-name.aspx?a=b
--------------------------- 後 - RewritePath 呼び出し ------------------- --------
RawUrl : - /Hotels/123/hotel-name.aspx?a=b
AppRelativeCurrentExecutionFilePath : - ~/DetailPages/DetailPage.aspx
CurrentExecutionFilePath : - /DetailPages/DetailPage.aspx
Params : - Code=123&a=b&__utma=221736730.1213284380.1356606190.1356674469.1356687004.4.....(Windows+NT+5.1%3b+rv%3a7.0.1)+Gecko%2f20100101+Firefox%2f7.0.1
パス: - /DetailPages/DetailPage.aspx
PhysicalPath : - D:\AppRoot\DetailPages\DetailPage.aspx
URL : - http://xyz.com/DetailPages/DetailPage.aspx?Code=123&a=b
--- Server.GetLastError
- トレース - IHttpModule のエラー イベント内 --
RawUrl : - /Hotels/123/hotel-name.aspx?a=b
AppRelativeCurrentExecutionFilePath : - ~/Hotels/123/hotel-name.aspx
CurrentExecutionFilePath : - /Hotels/123/hotel-name.aspx
パラメータ: - a=b&__utma=221736730.1213284380.1356606190.1356674469.1356687004.4....(Windows+NT+5.1%3b+rv%3a7.0.1)+Gecko%2f20100101+Firefox%2f7.0.1
パス: - /Hotels/123/hotel-name.aspx
PhysicalPath : - D:\AppRoot\Hotels\161\hotel-name.aspx
URL : - http://xyz.com/Hotels/123/hotel-name.aspx?a=b
エラー メッセージ ファイル '/Hotels/123/hotel-name.aspx' が存在しません。
スタックトレース
誰が問題になる可能性があるかを知ることができますか?
前もって感謝します。
url-rewriting - ASP.NET 3.5 でドメイン名 URL から既定のページ (default.aspx または index.aspx) を削除/非表示にする方法
私の要件は、当社の SEO 専門家が
、www.example.com/index.aspx を Google インデックスの Canonical Issue 用に www.example.com としてロードすることを提案していることです。
また、共有サーバーのために IIS サーバーにアクセスできず、サポート担当者があまり協力的ではないことにも言及したいと思います。
global.asax で次のコードを試しました。Index.aspx はサイトのデフォルト ページであるため、「500 - 内部サーバー エラー」というエラーがスローされます。