私は既存の質問に目を通しましたが、私にとって実際に役立つものは何も見つかりませんでした。
現在、セキュア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]のようなものを使用してみましたが、最終的にサーバーエラーが発生します。
ヘルプや提案を歓迎します。
乾杯。
以下を試してください:
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にリダイレクトされます。
.htaccessファイルに次のコードを追加します。
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
ウェブサイトのドメインでexample.comを変更します
URLリダイレクトチュートリアルはここから見つけることができます- .htaccessファイルを使用して、非wwwをwwwにリダイレクトし、HTTPをHTTPSにリダイレクトします
これを試して、私はそれを使用し、それはうまく動作します
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI}
これを試して:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} [R,L]
ソース: https://www.ndchost.com/wiki/Apache/redirect-http-to-https
(私は非常に多くの異なるコードブロックを試しましたが、この3ライナーは完璧に機能しました)
上記のすべてのコードを試してみましたが、どのコードも私の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をドメイン名に変更してください。英語が下手です。
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にリダイレクトします。
# 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]
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]
http://example.com
またはhttp://www.example.com
tohttps://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]
すべてのトラフィックがhttps
を超えるようにするための、より安全で安全な方法があります。たとえば、2つの仮想ホストをセットアップし、http
からhttps
ホストにすべてのトラフィックをリダイレクトします。詳細については この回答はsecurity.stackexchange.com にあります。
仮想ホストをリダイレクト用に設定すると、301ステータス(永続的にリダイレクト)を送信できるので、ブラウザーは、次のすべてのリクエストがリダイレクト先のhttpsサーバーに送信されることを理解します。したがって、最初のリダイレクト応答の後、それ以上のhttp要求は行われません。
また、間違った書き換えルールが設定されていると、受信リクエストからクエリパラメータが失われる可能性があるため、指定された回答も慎重に確認する必要があります。
これは検索の上位結果の1つであるため、AWS Beanstalkでhttpをhttpsリダイレクトに追加しようとすると、受け入れられたソリューションは機能しません。代わりに次のコードが必要です。
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^.*$ https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]
これを試してくださいRewriteCond %{HTTP_Host} !^www. [NC] RewriteRule ^(.*)$ http://www.%{HTTP_Host}/$1 [R=301,L]
私にとっては、このバリアントのみで動作します:
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 (ロシア語)
これを除いて、これらのどれも私にとってはうまくいきませんでした。私のサイトは 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]