[wordpress] .htaccessを使用してHTTPをHTTPにリダイレクトする


7 Answers

問題が解決しました!

最終的な.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>
Question

してください、私には173以上のupvotesと長いと非常に詳細なスレッドをお勧めしないでください。 それは私のために働かなかった。 私は他の多くの人も試しました( 4 )。 彼らはすべて私にTOO_MANY_REDIRECTSまたはエラー500を与えます。だから、ここに私の問題があります:

現在の.htaccessでは、これが起こります:

https://www.dukescasino.com/ - 完璧に動作します

https://dukescasino.com/ - 上記にリダイレクトする

下の2つのオプションは正常に読み込まれますが、httpsバージョンにリダイレクトする必要があります。

http://www.dukescasino.com/

http://dukescasino.com/

ここには現在の.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>

私はそれが関連しているとは思わないが、もしそうなら、現在のアクティブなプラグインのリストはここにある:

  • 高度なカスタムフィールド
  • オールインワンSEOパック
  • Bop検索ボックスアイテムタイプNavメニュー用
  • お問い合わせフォーム7
  • コメントを無効にする
  • Google XMLサイトマップ
  • WordPress.comのJetpack
  • 検索とフィルタ
  • スライダーWD
  • TablePress
  • UpdraftPlus - バックアップ/リストア
  • Wordfenceのセキュリティ
  • WPide
  • WPスマッシュ
  • WPスーパーキャッシュ

編集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エラーが発生しました。




これはテスト済みで安全です

なぜ?: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アドレスサイトアドレスの URLをhttps://に変更する必要がありhttps:// 一般設定でも( wp-admin/options-general.php




ちょうどこのコードを追加し、それは魅力のように動作します:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_HOST}#%{HTTPS}s ^www\.([^#]+)#(?:off|on(s)) [NC]
    RewriteRule ^ http%2://%1%{REQUEST_URI} [R=301,L]
</IfModule>



上記のどれも私のために働かなかった。 しかし、これらの行は私のWordPressサイトで同じ問題を解決しました:

RewriteEngine On

RewriteCond %{HTTP:HTTPS} !on
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]



これは私のために働いていない場合は、なし。 まず第一に、自分のプロバイダを見て、自分のプロバイダが.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';



上記の最終的な.htaccessとTest A、B、C、D、Eは私のためには機能しませんでした。 私はちょうど2行以下のコードを使用し、私のワードプレスのウェブサイトで動作します:

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

私はどこでミスをしているのか分かりませんが、このページは私を助けました。




私の場合、htaccessファイルには、 Far Future ExpirationWPSuperCacheなどのプラグインによってインストールされたルールと、wordpress自体の行が含まれていました。

問題を解決しないためには、ソリューションをhtaccessの先頭に置かなければなりませんでした(キャッシュプラグインとの競合のために間違ったリダイレクトが発生することがありますが、これは重要です)

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

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

この方法では、いくつかの設定が変更された場合、あなたの行はwordpressによって混乱することはありません。 また、 <IfModule>セクションは問題なく繰り返すことができます。

きちんとしたhtaccessルールのためにに感謝しなければならない。




これを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>



Related