80

私のApacheサーバーでは、すべての着信httpリクエストを同等のhttpsリクエストにリダイレクトできるようにしたいと考えています。問題は、デフォルトの仮想ホストに対して を指定せずにこれを実行できるようにしServerNameて、リクエスト URL に表示されるサーバー名でリダイレクトを機能させたいということです。私はこのようなことを望んでいます:

NameVirtualHost *:80
<VirtualHost *:80>
    RedirectPermanent / https://%{SERVER_NAME}/
    ...
</VirtualHost>

これは可能ですか、それともRedirect頼る必要がありRewriteますか?

4

4 に答える 4

115

これを vhost 設定に追加してみてください:

RewriteEngine On
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
于 2012-07-23T21:59:09.703 に答える
87

どちらも正常に動作します。ただし、Apache docsmod_rewriteによると、単純なリダイレクトには使用せず、代わりに使用する必要がありますRedirect。したがって、彼らによると、できれば次のことを行う必要があります。

<VirtualHost *:80>
    ServerName www.example.com
    Redirect / https://www.example.com/
</VirtualHost>

<VirtualHost *:443>
    ServerName www.example.com
    # ... SSL configuration goes here
</VirtualHost>

最初の部分は URL で、2/番目Redirectの部分はリダイレクト先です。

これを使用して、URL をサブドメインにリダイレクトすることもできます。 Redirect /one/ http://one.example.com/

于 2015-01-16T03:30:04.797 に答える