1. ホーム
  2. apache

Apache でスラッシュのエンコードを許可する必要がある

2023-10-02 05:39:52

質問

現在、URLの中にURLを配置しようとしています。例えば

http://example.com/url/http%3A%2F%2Fwww.url2.com

URLをエンコードする必要があることは承知しており、それを実行しましたが、現在は 404 エラーが返ってきます。私の問題はapacheにあると思います。 AllowEncodedSlashes On ディレクティブで修正できると思います。

ディレクティブを httpd.conf の一番下に置いてみましたが、効果がなく、次にどうしたらいいのかわかりません。私は正しい場所にそれを置くのでしょうか?もしそうなら、誰か他の解決策をお持ちですか?

どのように解決するのですか?

この問題は Apache Bug 35256 とは関係ありません。むしろ、Bug 46830 に関連しています。その AllowEncodedSlashes の設定はバーチャルホストには継承されず、バーチャルホストは Ubuntu のような多くのデフォルトの Apache 設定で使用されています。回避策としては AllowEncodedSlashes の中に <VirtualHost> コンテナ ( /etc/apache2/sites-available/default Ubuntuでは)。

バグ 35256 : %2F が PATH_INFO でデコードされる (ドキュメントは AllowEncodedSlashes のドキュメントには、デコードは行われないとあります)

バグ 46830 : もし AllowEncodedSlashes On がグローバルコンテキストに設定されている場合、 バーチャルホストには継承されません。明示的に AllowEncodedSlashes On を設定する必要があります。 <VirtalHost> コンテナの中にあります。

異なる設定セクションがどのようにマージされるかについてのドキュメントに書かれています。

中のセクション <VirtualHost> セクションの中のセクションはバーチャルホストの定義の外側の対応するセクションの後に適用されます。これにより、バーチャルホストはメインサーバーの設定を上書きすることができます。