116

古いURL( )があり 、SSL証明書を自分のサイトに実装してインストールした場所www1.test.netにリダイレクトしたいと思います。 これは私の古いファイルです:https://www1.test.net

.htaccess

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

.htaccessURLが自動リダイレクトされるようにファイルを構成するにはどうすればよいhttpsですか?
ありがとう!

4

16 に答える 16

230

以下を使用して、ドメインのすべてのページを http から https に正常にリダイレクトします。

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

これはリダイレクトを使用して301 'permanently moved'リダイレクトされることに注意してください。これにより、SEO ランキングの転送に役立ちます。

302 'temporarily moved'変更を使用してリダイレクトするには[R=302,L]

于 2014-11-19T23:37:23.617 に答える
130

2016年更新

この回答が注目を集めているので、仮想ホストを使用してこれを行うためのより推奨される方法を示唆したいと思います: Apache: Redirect 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 ポートです。別のポートを指定した場合は、それに合わせて条件を調整する必要があります)。その場合は、URL 全体を照合(.*)し、https-url にリダイレクトします。%{SERVER_NAME}特定の URL に置き換えることができますが、この方法では、他のプロジェクトのコードを変更する必要はありません。%{REQUEST_URI}は、TLD (トップレベル ドメイン) の後の URL の部分であるため、元の場所にリダイレクトされますが、https.

于 2012-11-14T09:56:30.747 に答える
81

wwwこれは、 HTTPS の場合、およびプロキシ ユーザーと非プロキシ ユーザーの場合に最適です。

RewriteEngine On

### WWW & HTTPS

# ensure www.
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# ensure https
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

### WWW & HTTPS
于 2016-09-09T16:11:17.130 に答える
14

次のコードで https を強制します。

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
于 2012-11-14T09:59:36.157 に答える
6

HTTPS/SSL 接続がロード バランサーで終了し、すべてのトラフィックがポート 80 のインスタンスに送信される場合、次のルールは非セキュア トラフィックをリダイレクトするために機能します。

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

mod_rewriteモジュールがロードされていることを確認します。

于 2016-09-02T23:14:00.060 に答える
4

.htaccessファイルの最後にこのコードを追加します

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
于 2012-11-14T09:40:27.383 に答える
2

リダイレクトにも問題がありました。Stackoverflow で提案されたすべてを試しました。私が自分で見つけた1つのケースは次のとおりです。

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP:SSL} !=1 [NC]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
于 2016-05-14T09:22:20.970 に答える
1

RewriteCond の RewriteEngine %{HTTPS} オフ RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

リダイレクトを使用してファイルにアクセスする方法

于 2021-09-19T16:50:49.587 に答える