74

私は既存の質問を調べましたが、私にとってうまくいくものは実際には見つかりませんでした。

現在、SecureSSL証明書を使用してサイトを運営しています。https://www.example.co.ukでアクセスできます。問題は、http://www.example.co.ukでもサイトにアクセスできることです。これを可能にしたくありません。httpからhttpsにリダイレクトするために必要です。

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

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]のようなものを使ってみましたが、サーバーエラーが発生します。

任意のヘルプや提案をいただければ幸いです。

乾杯。

4

17 に答える 17

190

次のことを試してください。

 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にリダイレクトされます。

于 2012-05-07T22:22:20.617 に答える
16

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

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

example.comをウェブサイトのドメインに変更する

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

于 2015-10-28T11:20:18.583 に答える
5

これを試してみてください、私はそれを使用しました、そしてそれはうまくいきます

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
于 2014-10-22T08:37:41.327 に答える
4

これを試して:

RewriteEngine On

RewriteCond %{HTTPS} off

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

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

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

于 2016-04-02T06:59:11.453 に答える
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をあなたのドメイン名に変更してください。英語が下手でごめんなさい。

于 2017-09-12T14:20:34.660 に答える
3

私にとっては、このバリアントのみを使用します。

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(ロシア語)

于 2018-04-06T08:56:16.447 に答える
2
# 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]
于 2018-05-30T08:56:55.667 に答える
1

リダイレクトhttp://example.com または簡単 http://www.example.com https://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]
于 2016-03-26T17:05:48.830 に答える
1

すべてのトラフィックが確実に通過するようにするための、より優れた、より安全な方法がありますhttps。たとえば、2つの仮想ホストを設定し、すべてのトラフィックを自分httpからホストにリダイレクトしますhttps。これについて詳しくは、 security.stackexchange.comのこの回答をご覧ください

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

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

于 2016-05-06T08:10:19.217 に答える
1

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にリダイレクトします。

于 2016-10-01T06:20:04.043 に答える
1

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

RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^.*$ https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]
于 2018-08-11T13:43:05.960 に答える
1

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

于 2018-09-08T23:06:19.607 に答える
1

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]
于 2018-10-28T07:11:15.403 に答える
0

これを除いて、これらのどれも私のために働きませんでした。私のサイトは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]
于 2019-02-04T14:27:14.353 に答える
0

以下のコードは、ファイルに追加されると.htaccess、http:宛てのトラフィックをhttps:に自動的にリダイレクトします。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>

プロジェクトが含まれている場合はLaravel、2行を追加します

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

すぐ下RewriteEngine On。最後に、.htaccessファイルは次のようになります。

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

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

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

詳細については、こちらをご覧ください

于 2019-11-02T17:38:11.973 に答える
0

.htaccessファイルに次の行を追加してhttpアクセスを制限します

SSLRequireSSL

于 2020-12-02T15:46:52.380 に答える
0

何らかの理由でホストで反転しているので、再認証したい場合は、httpsがオンになっているかどうかを確認してからhttpsにリダイレクトする必要があります

RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301]

私が使用するコードです

于 2022-02-22T17:55:17.247 に答える