web-dev-qa-db-ja.com

.htaccessを介してhttpsにhttp

私は既存の質問に目を通しましたが、私にとって実際に役立つものは何も見つかりませんでした。

現在、セキュアSSL証明書を使用してサイトを実行しています。 https://www.example.co.uk でアクセスできます。問題は、サイトが http://www.example.co.uk でもアクセスできることです。 =-これを可能にしたくない。 httpからhttpsにリダイレクトする必要があります。

.htaccessファイルで使用するこのコードスニペットを見つけました。

Options +FollowSymLinks 
RewriteEngine on 
RewriteCond %{HTTP_Host} ^example.co.uk [NC] 
RewriteRule ^(.*)$ https://example.co.uk/$1 [L,R=301]

ユーザーがexample.co.ukをアドレスバーに入力すると正常に機能しますが、ユーザーが「www.example.co.uk」または「 http://www.example.co.uk '。

[OR]のようなものを使用してみましたが、最終的にサーバーエラーが発生します。

ヘルプや提案を歓迎します。

乾杯。

61
fitzilla

以下を試してください:

 RewriteEngine On
 RewriteCond %{HTTPS} !=on
 RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

また、次のようにポート番号に基づいてリダイレクトすることもできます。

 RewriteCond %{SERVER_PORT} ^80$
 RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

これにより、ポート80で受信したすべての要求がHTTPSにリダイレクトされます。

156
BluesRockAddict

.htaccessファイルに次のコードを追加します。

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

ウェブサイトのドメインでexample.comを変更します

URLリダイレクトチュートリアルはここから見つけることができます- .htaccessファイルを使用して、非wwwをwwwにリダイレクトし、HTTPをHTTPSにリダイレクトします

13
JoyGuru

これを試して、私はそれを使用し、それはうまく動作します

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI}
5
Ali Aboussebaba

これを試して:

RewriteEngine On

RewriteCond %{HTTPS} off

RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} [R,L]

ソース: https://www.ndchost.com/wiki/Apache/redirect-http-to-https

(私は非常に多くの異なるコードブロックを試しましたが、この3ライナーは完璧に機能しました)

3
afriend

上記のすべてのコードを試してみましたが、どのコードも私のWebサイトで機能していません。次に、このコードを試してみると、このコードは私のWebサイトに最適です。 htaccessで次のルールを使用できます。

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On

//Redirect http to https
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_Host} ^(www\.)?example\.com
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

//Redirect non-www to www
RewriteCond %{HTTP_Host} ^example.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]

</IfModule>

Example.comをドメイン名に変更してください。英語が下手です。

3
Dinesh Gurjar

HTTPをHTTPSにリダイレクトし、各URLにwwwを追加する場合は、以下のhtaccessを使用します

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} [R,L]
RewriteCond %{HTTP_Host} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_Host}/$1 [R=301,L] 

最初にHTTPをHTTPSにリダイレクトし、次にwwwにリダイレクトします。

1
Mady Joshi
# Switch rewrite engine off in case this was installed under HostPay.
RewriteEngine Off

SetEnv DEFAULT_PHP_VERSION 7

DirectoryIndex index.cgi index.php

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

# RewriteCond %{HTTP_Host} ^compasscommunity.co.uk\.com$ [NC]
# RewriteRule ^(.*)$ https://www.compasscommunity.co.uk/$1 [L,R=301]
1
Compass

HTMLインデックスへの完全なコード:

RewriteEngine on
RewriteCond %{HTTP_Host} ^YourNameWebsite\.com$ [OR]
RewriteCond %{HTTP_Host} ^www\.YourNameWebsite\.com$
RewriteRule ^/?$ "https\:\/\/YourNameWebsite\.com\/index\.html" [R=301,L]

または

PHPインデックスに移動する完全なコード:

RewriteEngine on
RewriteCond %{HTTP_Host} ^YourNameWebsite\.com$ [OR]
RewriteCond %{HTTP_Host} ^www\.YourNameWebsite\.com$
RewriteRule ^/?$ "https\:\/\/YourNameWebsite\.com\/index\.php" [R=301,L]
1
Allysha

http://example.comまたはhttp://www.example.comtohttps://www.example.comを簡単な方法でリダイレクトするには、htaccessで次のルールを使用できます。

RewriteEngine on

RewriteCond %{HTTPS} off
RewriteCond www.%{HTTP_Host} ^(?:www\.)?(www\..+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [NE,L,R]

[テスト済み]

%{REQUEST_SCHEME}変数はApache 2.4以降で使用可能です。この変数には要求されたスキーム(httpまたはhttps)の値が含まれます。Apache2.4では、次のルールを使用できます。

RewriteEngine on


RewriteCond %{REQUEST_SCHEME} ^http$
RewriteCond %{HTTP_Host} ^(www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%{HTTP_Host}%{REQUEST_URI} [NE,L,R]
1
starkeen

すべてのトラフィックがhttpsを超えるようにするための、より安全で安全な方法があります。たとえば、2つの仮想ホストをセットアップし、httpからhttpsホストにすべてのトラフィックをリダイレクトします。詳細については この回答はsecurity.stackexchange.com にあります。

仮想ホストをリダイレクト用に設定すると、301ステータス(永続的にリダイレクト)を送信できるので、ブラウザーは、次のすべてのリクエストがリダイレクト先のhttpsサーバーに送信されることを理解します。したがって、最初のリダイレクト応答の後、それ以上のhttp要求は行われません。

また、間違った書き換えルールが設定されていると、受信リクエストからクエリパラメータが失われる可能性があるため、指定された回答も慎重に確認する必要があります。

1
Wilt

これは検索の上位結果の1つであるため、AWS Beanstalkでhttpをhttpsリダイレクトに追加しようとすると、受け入れられたソリューションは機能しません。代わりに次のコードが必要です。

RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^.*$ https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]
1
Ignas2526

これを試してくださいRewriteCond %{HTTP_Host} !^www. [NC] RewriteRule ^(.*)$ http://www.%{HTTP_Host}/$1 [R=301,L]

1
krypto99

私にとっては、このバリアントのみで動作します:

RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]

ありがとう https://www.reg.ru/support/hosting-i-servery/sajty-i-domeny/kak-dobavit-redirekt/redirekt-s-http-na-https (ロシア語)

1
Sllouyssgort

これを除いて、これらのどれも私にとってはうまくいきませんでした。私のサイトは https://www.asmallorange.com でホストされていました

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_Host}/$1 [R=301,L]
0
Bee