173人以上の投票を含む 長くて非常に詳細なスレッド を推奨しないでください。私にはうまくいきませんでした。他にもいろいろ試してみました( 1 、 2 、、 4 )。それらはすべて私にTOO_MANY_REDIRECTSまたはエラー500を与えます。だから、ここに私の問題です:
私の現在の.htaccessでは、これが起こります。
https://www.dukescasino.com/ - 完璧に動作します
https://dukescasino.com/ - 上記のどれにリダイレクトしてください
以下の2つのオプションは問題なくロードできますが、httpsバージョンにリダイレクトする必要があります。
これが現在の.htaccessです。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
私はそれが関連しているとは思わないが、もしそうであれば、これは現在アクティブなプラグインのリストです:
編集1 - 実行されたテスト:
テストA:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} off
# First rewrite to HTTPS:
# Don't put www. here. If it is already there it will be included, if not
# the subsequent rule will catch it.
RewriteRule .* https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]
# Now, rewrite any request to the wrong domain to use www.
RewriteCond %{HTTP_Host} !^www\.
RewriteRule .* https://www.%{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>
結果:ERR_TOO_MANY_REDIRECTS
テストB:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
結果:ERR_TOO_MANY_REDIRECTS
テストC:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
結果:ERR_TOO_MANY_REDIRECTS
テストD:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
結果:ERR_TOO_MANY_REDIRECTS
テストE:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_Host} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_Host}%{REQUEST_URI}$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_Host}%{REQUEST_URI}$1
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
結果:302が見つかりました。また、ErrorDocumentを使用して要求を処理しようとしたときに500 Internal Server Errorエラーが発生しました。
問題が解決しました!
最後の.htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{ENV:HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Dreamhostでは、これはうまくいきました。
<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>
わたしにはできる:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*) https://%{SERVER_NAME}/$1 [R,L]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
私の場合、htaccessファイルには、Far Future ExpirationやWPSuperCacheとwordpress自体からの行も。
混乱させないために、私はhtaccessの一番上に解決策を置かなければなりませんでした(あなたが最後にそれを置くなら、それはキャッシュプラグインとの衝突のために間違ったリダイレクトを引き起こす)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]
</IfModule>
こうすることで、設定が変わっても、あなたの行がワードプレスでめちゃくちゃになることはありません。また、 <IfModule>
セクションは問題なく繰り返すことができます。
私は Jason Shah きちんとした htaccess rule に感謝しなければなりません。
あなたの情報については、それは本当にあなたのホスティングプロバイダに依存します。
私の場合( Infomaniak )、上記のものは実際には機能せず、無限のリダイレクトループが生じました。
これを行う正しい方法は 実際にはサポートサイトで説明されています :
RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://your-domain.com/$1 [R=301,L]
だから、常にあなたのホスティングプロバイダに確認してください。うまくいけば、彼らはこれを行う方法を説明する記事を持っています。それ以外の場合は、サポートに依頼してください。
なぜですか?Wordpress 書き換えルールの編集の場合は、HTTPSルールを削除しないでください!だからこれは競合しないネイティブのWordpressのルールと同じだ。
<IfModule mod_rewrite.c>
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}/$1 [R,L]
</IfModule>
# BEGIN WordPress
<IfModule mod_rewrite.c>
#Your our Wordpress rewrite rules...
</IfModule>
# END WordPress
注:あなたは変更する必要がありますWordPressアドレス&サイトアドレスで[https://
]へのURL 全般設定も(wp-admin/options-general.php
)
からhttpをhttpsにリダイレクトする最も簡単な方法wordpressからsite_urlと自宅を変更する http://example.com から - https://example.com 。 Wordpressがリダイレクトを行います。 (これが、 "リダイレクトが多すぎる"というエラーを受け取る理由です。ワードプレスはhttpにリダイレクトし、.htaccessはhttpsにリダイレクトします)。
残念ながら、このQ&Aにリストされているすべての解決策が私にはうまくいかなかったことがわかりました。仕事は何でした:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
RewriteCond %{HTTP_Host} ^example\.com$ [OR]
RewriteCond %{HTTP_Host} ^www\.example\.com$
RewriteRule ^/?$ "https\:\/\/www\.example\.com\/" [R=301,L]
</IfModule>
# End Wordpress
上記のWordpressのルールは、マルチユーザネットワークモードのWordpress用です。 Wordpressがシングルサイトモードの場合は、次のようにします。
# 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]
RewriteCond %{HTTP_Host} ^example\.com$ [OR]
RewriteCond %{HTTP_Host} ^www\.example\.com$
RewriteRule ^/?$ "https\:\/\/www\.example\.com\/" [R=301,L]
</IfModule>
# End Wordpress
上記のどれも私のために働きませんでした。しかし、これらの行は私のWordPressサイトで同じ問題を解決しました:
RewriteEngine On
RewriteCond %{HTTP:HTTPS} !on
RewriteRule .* https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
これをWordPressの.htaccessファイルに追加します。
RewriteCond %{HTTP_Host} ^yoursite.com [NC,OR]
RewriteCond %{HTTP_Host} ^www.yoursite.com [NC]
RewriteRule ^(.*)$ https://www.yoursite.com/$1 [L,R=301,NC]
したがって、デフォルトのWordPressの.htaccessファイルは次のようになります。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTP_Host} ^yoursite.com [NC,OR]
RewriteCond %{HTTP_Host} ^www.yoursite.com [NC]
RewriteRule ^(.*)$ https://www.yoursite.com/$1 [L,R=301,NC]
</IfModule>
これが私のために働いた場合なし。まず第一に私は私のプロバイダが与える.htaccess
の中でどのようにSSLを有効にするかを見るために私のプロバイダを見なければなりませんでした
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:HTTPS} !on
RewriteRule (.*) https://%{SERVER_NAME}/$1 [QSA,L,R=301]
</IfModule>
しかし、私の調査に何日かかかったのは、私の提供しているサイトがプロキシの背後にあるため、wp-config.php
に次の行を追加しなければならなかったことです。
/**
* Force le SSL
*/
define('FORCE_SSL_ADMIN', true);
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) $_SERVER['HTTPS']='on';
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI} [L,R=301]
RewriteEngine On
RewriteCond %{HTTP_Host} ^digitalsoftwaremarket.com [NC]
RewriteRule ^(.*)$ http://www.digitalsoftwaremarket.com/$1 [L,R=301]
</IfModule>
.htaccess
を編集したくない場合に使用できる代替ソリューションは次のとおりです。
add_action( 'template_redirect', 'nonhttps_template_redirect', 1 );
function nonhttps_template_redirect() {
if ( is_ssl() ) {
if ( 0 === strpos( $_SERVER['REQUEST_URI'], 'https' ) ) {
wp_redirect( preg_replace( '|^http://|', 'https://', $_SERVER['REQUEST_URI'] ), 301 );
exit();
} else {
wp_redirect( 'https://' . $_SERVER['HTTP_Host'] . $_SERVER['REQUEST_URI'], 301 );
exit();
}
}
}
あなたはこれをあなたのテーマの一番下に置くことができますfunctions.php
上記の最後の.htaccessとテストA、B、C、D、Eは私にとってはうまくいきませんでした。私は2行以下のコードを使用しました、そしてそれは私のWordPressウェブサイトで動作します:
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.thehotskills.com/$1 [R=301,L]
どこで間違いを犯しているのかわかりませんが、このページが役に立ちました。
Httpから https:// www にリダイレクトします
RewriteEngine On RewriteCond %{HTTP_Host} ^example\.com [NC] RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
これは確かに機能します!
このコードをwordpressの.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