web-dev-qa-db-ja.com

htaccess 301のhttpからhttpsへのリダイレクトが機能しない

今日はhttpからhttpsに更新しました。ここまでは順調ですね。すべてが機能していますが、リダイレクトコマンドです。まだ古いバージョンのhttpを使用している自分のブログにリンクしている外部のソーシャルメディアまたはWebサイトをクリックしてもリダイレクトされません。

これは私のファイルの一部がどのように見えるかです:

# -FrontPage-
IndexIgnore .htaccess */.??* *~ *# */HEADER* */README* */_vti*
<Limit GET POST>
order deny,allow
deny from all
allow from all
</Limit>
<Limit PUT DELETE>
order deny,allow
deny from all
</Limit>
AuthName zoomingjapan.com
AuthUserFile /home/zoomingj/public_html/_vti_pvt/service.pwd
AuthGroupFile /home/zoomingj/public_html/_vti_pvt/service.grp
# 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} ^zoomingjapan.com [NC,OR]
RewriteCond %{HTTP_Host} ^www.zoomingjapan.com [NC]
RewriteRule ^(.*)$ https://zoomingjapan.com/$1 [L,R=301,NC]
</IfModule>

# END 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 %{HTTPS} off
RewriteCond %{HTTP_USER_AGENT} !FeedBurner    [NC]
RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
RewriteRule (.*) https://%{HTTP_Host}/$1 [R=301,L]
</IfModule>

これは httpリンク です。リダイレクトされていないことをテストして確認できます。

キャッシングプラグインが干渉している可能性がありますか?私はLiteSpeed Cacheを使っています。

1
japanworm

リダイレクトコードを間違った場所に配置しました。それはbefore# BEGIN WordPressセクションに行く必要があります。リダイレクトコードafterをWordPressフロントコントローラーに配置することで、リクエストが物理ファイルに対するものでない限り、決して処理されません。

ただし、最初の試行は正しくありません(HTTPSのチェックが欠けているため)(リダイレクトが実行された場合)。

HTTPSからHTTPSへの標準HTTPは次の形式を取ります。

RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.example.com/$1 [R=301,L]

ただし、理想的には、コンテンツの重複や複数のリダイレクトを回避するために、これを正規のwww/non-wwwリダイレクトとも組み合わせる必要があります。たとえば、優先設定がwwwの場合(そして他にサブドメインがない場合)、次のようになります。

# Redirect bare domain to www and HTTPS
RewriteCond %{HTTP_Host} !^www\.
RewriteRule (.*) https://www.example.com/$1 [R=301,L]

# Redirect HTTP to HTTPS
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_Host}/$1 [R=301,L]

更新: あなたの好みが非wwwバージョンのためであるなら、あなたは次のような何かを読むために最初のルールを変更することができます

# Redirect www to non-www (and HTTPS)
RewriteCond %{HTTP_Host} ^www\.
RewriteRule (.*) https://example.com/$1 [R=301,L]

(WordPressの必要な設定も変更したとします。)

4
MrWhite

これを試して:

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