検索ページのセマンティック URL を作成しようとしていますが、誰かがドットで終了する検索を使用すると、.net エンジンは 404 を返します。
リクエストはルーティングエンジンにも届かないので、セキュリティなどに関係していると思います。
たとえば、次の場合、stackoverflow ルートも機能しません。 https://stackoverflow.com/questions/tagged/etc .
検索ページのセマンティック URL を作成しようとしていますが、誰かがドットで終了する検索を使用すると、.net エンジンは 404 を返します。
リクエストはルーティングエンジンにも届かないので、セキュリティなどに関係していると思います。
たとえば、次の場合、stackoverflow ルートも機能しません。 https://stackoverflow.com/questions/tagged/etc .
.NET 4.0 および IIS 7 以降を使用している場合は、web.config の system.web セクションでこのフラグを設定すると、許可されます。
<httpRuntime relaxedUrlToFileSystemMapping="true" />
私はそれをテストしましたが、動作します。Haackに説明があります。
'。'以降のすべて ファイル拡張子です。その拡張機能がASP.NETにマップされていない場合、ASP.NETハンドラーに渡されません。IISは、代わりに静的ファイルを探します。したがって、404。それが何も追加しない場合(そしてそれがどのように追加されるかを確認するのが難しい場合)、私はそれを取り除くことをお勧めします。
末尾のピリオドが重要でない場合 ( https://stackoverflow.com/questions/tagged/etc.の場合など)、IIS の URL 書き換えモジュールを使用して末尾のピリオドを取り除くことができます。
パターン: ^(.*[^.])(\.+)$
URL の書き換え: {R:1}
これは、ピリオドを破棄できない場合や、中間パス セグメントの最後にピリオドがある場合には役に立ちませんが、自動リンク アルゴリズムによって URL に付けられたピリオドを処理するという非常に現実的な使用例では役に立ちません。それは助けることができます。
IIS は、拡張子が空のリクエストを処理する方法を認識していないようです。
Web サイトを右クリックし、[プロパティ] を選択します。[ホーム ディレクトリ] タブの [構成...] をクリックします。「アプリケーション拡張機能」を見て、空またはワイルドカードの拡張機能を追加してみてください。
そのようなクエリ文字列に正確なユーザー検索を入れてはいけません...それらをUrlEncodeする必要があります。それで問題は解決します。
Windows では、ファイル名を「.」で終わらせることはできません。すべての問題はそこから発生していると思います。つまり、IIS はそれをどう処理するかを認識していないため、ASP.NET エラー ハンドラまで到達せず、デフォルトの IIS 404 ページでハンドルを取得します。
ほとんどの検索エンジン (とにかく Google ) はクエリから句読点を除外していますが、あなたの検索エンジンもそうすべきだと思います。
編集: ファイルの種類がないため、Microsoft のサイトでさえ見られないため、失敗しますhttp://www.microsoft.com/en/us/fallover。ただし、デフォルトのエラー ファイル (C:\WINDOWS\help\iisHelp\common などの場所) を変更するか、完全に変更することができます。
これをチェックしてください:カスタムエラーメッセージの構成(IIS 6.0)