1. ホーム
  2. apache

[解決済み] .htaccess httpからhttpsへのリダイレクト

2022-03-01 09:52:24

質問

古いurlがあります( www1.test.net にリダイレクトしたいのですが。 https://www1.test.net
私のサイトに当社のSSL証明書を導入し、インストールしました。
これは私の古いファイルです .htaccess :

RewriteEngine On
RewriteRule !\.(js|gif|jpg|png|css|txt)$ public/index.php [L]
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ public/$1 [L]

をどのように設定すればよいのでしょうか? .htaccess に自動的にリダイレクトされるようにします。 https ?
ありがとうございます。

解決方法は?

2016年アップデート

この回答が注目されたので、バーチャルホストを使ったより推奨される方法を紹介したいと思います。 アパッチです。リダイレクトSSL

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

<VirtualHost _default_:443>
   ServerName mysite.example.com
   DocumentRoot /usr/local/apache2/htdocs
   SSLEngine On
# etc...
</VirtualHost>

古い答え、ハチャメチャなこと ssl-portが80に設定されていない場合、この方法で動作します。

RewriteEngine on

# force ssl
RewriteCond     %{SERVER_PORT} ^80$
RewriteRule     ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

これは最初のリライト・ルールであることに注意してください。

編集してください。 このコードでは以下のようなことを行っています。RewriteCond(ition) は、リクエストの ServerPort が 80 かどうかをチェックします (これはデフォルトの http-port で、他のポートを指定した場合は条件をそれに合わせなければなりません)。もしそうなら、URL 全体にマッチします (.*) を作成し、https-urlにリダイレクトします。 %{SERVER_NAME} を特定のurlに置き換えることもできますが、この方法だと他のプロジェクトのコードを変更する必要がありません。 %{REQUEST_URI} は、TLD (トップレベルドメイン) の後の部分なので、https として元の URL にリダイレクトされます。