web-dev-qa-db-ja.com

WordPressすべてのHTTPリクエストを.htaccess経由でHTTPSにリダイレクトする

私は何度もこれをやったことがあります、そしてまだ私はなんらかの未知の理由のためにこれを再びすることに成功していません。無限の解決策を試みました。私が試したことはすべて無限のリダイレクトループになります。

これを行うための最良の選択肢は何ですか?

アップデート1 これは試したことのいくつかです。

RewriteCond %{HTTP_Host} ^website\.co\.uk [NC]
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.website.co.uk/$1 [R,L]

そして;

RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.website.co.uk$1 [R,L]

キャッシュの問題を防ぐためにさまざまなブラウザでテストされています。それでも何もありません、ただ継続的なリダイレクトループを取得しています。

5
Michael Cropper

あなたがあなたの家以外のあなたのページへのリンクを入力するとき、私は見る、例:

  • http://www.michaelcropper.co.uk/contact-me
  • www.michaelcropper.co.uk/contact-me
  • michaelcropper.co.uk/contact-me

https://が接頭辞にない場合は、代わりにHTTPリンクがロードされます。 .htaccessタグの間の<IfModule mod_rewrite.c>に次のコードを追加します。

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

.htaccessに追加の変更が加えられていない場合は、次のようになります。

# 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]
# Rewrite HTTP to HTTPS
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}/$1 [R,L]
</IfModule>
# END WordPress

どうなるか教えてください。

あなたは.htaccessでヘッダを設定することができます

<IfModule mod_headers.c>
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" env=HTTPS
</IfModule>
1
Iggy

あなたの.htaccessでこれを試してください:

RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
</IfModule>
# END WordPress
1
Jasom Dotnet

.htaccessファイル内にコードを追加する

 <IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteBase /

   RewriteCond %{HTTPS} !=on
   RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]

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

問題を解決するために10分かかりました

ドメインのconfファイルを追加します。

/etc/httpd/conf.d/のc​​entos 7に移動し、anything.confという名前のconfファイルを作成します。

次のコードを追加します。

<VirtualHost *:80>
    ServerName domain.com
    ServerAlias www.domain.com
    ServerAdmin [email protected]
    DocumentRoot /var/www/html

    <Directory /var/www/html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>

    ErrorLog /var/log/httpd/example.com-error.log
    CustomLog /var/log/httpd/example.com-access.log combined
</VirtualHost>

example.comをドメインに置き換えます。
次に、.htaccessにhttps書き換えコードを追加します。 :)

0
user3469142

W3 Total Cacheを使用している場合、@ Ethan Jinks O'Sullivanからの回答は、W3 Total Cacheが.htaccessで改造する前にリダイレクトを配置した場合にのみ機能します。

#BEGIN Rewrite HTTP to HTTPS
<IfModule mod_rewrite.c>
  RewriteCond %{HTTPS} !=on
  RewriteRule ^(.*) https://%{SERVER_NAME}/$1 [R,L]
</IfModule>
#END Rewrite HTTP to HTTPS

# BEGIN GZIP COMPRESSION
...
# END GZIP COMPRESSION

# BEGIN DEFLATE COMPRESSION
...
# END DEFLATE COMPRESSION

# BEGIN W3TC Browser Cache
...
# END W3TC Browser Cache

# BEGIN W3TC Page Cache core
...
# END W3TC Page Cache core

# 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
0
Chris Sprague

これを.htaccessファイルに追加するだけです。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
0
zihadul