3

サーバーを共有ホストから専用サーバーに切り替えたところ、1つの問題を除いてすべてが同じように機能しているようです。これに入る前に、両方のサーバーがLAMPスタックの上でまったく同じcodeigniter構成を実行したことを言及する必要があります

例だけで示すのが最も簡単だと思うので、ここにそれらがあります:

URI: / search / term /%
新しいサーバーの結果:不正な要求-サーバーエラー
古いサーバーの結果:検索を実行し、%の結果を返します

URI: / search / term /%20
新しいサーバーの結果:スペースの結果を検索して返します(%20の翻訳)
古いサーバーの結果:スペースの結果を検索して返します(%20の翻訳)

URI: / search / term /%2F
新しいサーバーの結果:見つかりません-サーバーエラー
古いサーバーの結果: /(%2Fの変換)の結果を検索して返します

以前のサーバーと同じように、サーバーがこれらのインスタンスで結果を生成するようにします。


UPDATE
セナリオ#3は解決されましたが、最初の問題はまだ残っており、私はそれを理解できません。私はそれについての詳細を追加して、可能な限りそれの底に到達したいと思います。

正確なエラーメッセージは次のとおりです
。400BadRequestBad; ブラウザが、このサーバーが理解できないリクエストを送信しました。

  1. apacheエラーログを確認すると、このエラーについては何もありません。
  2. 結果は、すべてのブラウザで、キャッシュがクリアされた後も同じです。
  3. 最後に、 AcceptPathInfo Onを正しく設定したことを確信しています。これは、URL:/robots.txt/klsdfj(実際の場所ではない)に移動すると、robots.txtファイルのコンテンツが生成されるためです。私の理解の限りでは、それがこのディレクティブの適切な機能です。

さらに情報が必要な場合はお知らせください。喜んで提供させていただきます。ありがとうございました!!

4

2 に答える 2

3

apacheディレクティブAllowEncodedslashesまたはこれを見てください:AcceptPathInfo

よろしく

mimiz

于 2012-06-07T21:07:06.013 に答える
0

フォームからそのテキストを渡す場合は、おそらくencodeURI()Javascriptを使用してテキストに渡し、サーバーに渡す必要があります。次に、サーバー(PHP)はを使用してそれをデコードできますrawurldecode()。あなたの例を使用すると、URLに%20なり%2520、サーバーはそれをデコードします%20

http://www.php.net/manual/en/function.rawurldecode.php

于 2012-06-07T21:02:47.103 に答える