it-swarm-ja.com

VirtualHostでのSSLリダイレクトにより、URLが破損します

最近、すべてのトラフィックをhttps経由で転送するようにWebサイトで構成しました。これを表示するようにvhostファイルを変更してこれを行いました

<VirtualHost *:80>
    DocumentRoot "/srv/http/example"
    ServerName example.com
    Redirect permanent / https://example.com/
</VirtualHost> 

これは、サイトのルート(example.com)に移動すると正常に機能しますが、サブディレクトリに移動しようとすると、URLが奇妙に途切れます。たとえば、example.com/blogと入力すると、 https://example.comblog にリダイレクトしようとします。ここで何が起こっているのですか?

4
stmfunk

私は変更することで問題を解決することができました:

https://example.com/

https://example.com\/

これで問題は解決したようです。ある時点でApacheがスラッシュを取り除いたと思います。

4
stmfunk

TLS/SSLサイトを非TLSサイトにリダイレクトするには、以下の詳細を参照してください。

末尾にスラッシュを追加し、バックスラッシュでエスケープすると、欠落しているスラッシュが復元されます。

特定のサイトで両方の仮想ホスト(*:80と*:443)でリダイレクトが必要でしたが、TLSサイトが正しく機能していませんでした。両方の仮想ホストに以下を追加すると、問題が修正されました。

Redirect permanent "/" http://example.com\/  

注:Apacheのドキュメントには、すべてを引用符で囲むことが示されています。私の場合、上記は問題なく機能し、URL内のページを期待どおりに解決できました。出典: https://httpd.Apache.org/docs/2.4/en/rewrite/avoid.html

ソースから推定された例:

Redirect "/one/" "http://one.example.com/"
Redirect permanent "/" "http://example.com/"

これが誰かを助けることを願っています。

1
semtex41