www.ありにリダイレクトすると、ダッシュボードにログインできなくなる
-
さくらサーバーにドメインを入れました。
そのドメインは、「www.あり」で運営したいため、
http://www.なしのURLをwww.ありにリダイレクトする必要があります。ですが、www.ありにリダイレクトすると、ダッシュボードにログインできなくなります。
1,さくらサーバーで常時SSL化するために、www.なしでサーバーに登録。
2,SSL化をしてから、www.ありへリダイレクト。
という手順を踏んでいます。
この「www.あり」へリダイレクトして、ログインできるようにするにはどうすればいいでしょうか?
以下を.htaccessの一番上に記述しました。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(ドメイン\.com)$ [NC]
RewriteRule (.*) http://www.ドメイン.com%{REQUEST_URI} [R=301,L]さくらサーバーにお問い合わせしましたが、
.htaccessのリダイレクト関連は、サポート対象外とのことです。よろしくお願いいたします。
-
さくらのレンタルサーバで、ダッシュボードへのログインができない現象は、wwwありなしの正規化というより、常時SSLの仕様によるケースが多いように感じます。
まず前提条件として、さくらのレンタルサーバの場合、常時SSL化の際.にhtaccessに記述すべきリダイレクトの内容はほかのレンタルサーバと異なります。詳細はさくらインターネットのこちらのサポートページに記載があります。
https://help.sakura.ad.jp/hc/ja/articles/115000047641–WordPress-%E5%B8%B8%E6%99%82SSL%E5%8C%96%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9このプラグインが書き込む内容と同じ内容を自分で.htaccessに書いてもよいのですが、まずHTTP→HTTPSへの正規化部分が正常に動いているかを確認してみてください。
次にwwwありなしの正規化ですが、ここはさくらのレンタルサーバのドメイン設定で「マルチドメインとして使用する(推奨)」になっていると仮定します。(以前は、wwwを付与せずマルチドメインとして使用する設定にしないといけない時があったのですが今は大丈夫です)
そのドメイン上にWordPressのコンテンツしか置いてない場合は、
wwwなしでアクセスしても自動でwwwありにリダイレクトされるはずなので自分で正規化の記述は入れなくても大丈夫です。
(※訂正: 自動ではされないですね。すみません。)他に静的コンテンツも置いてあるなどの理由でwwwありへの正規化の記述が必要な場合は、.htaccessの一番上ではなくさくらHTTPS正規化用の記述の下に置くなどしてみてはどうでしょうか。(自分の環境ではそれで問題なく動作しています)
のむらけいさん、回答ありがとうございます!
常時SSL化で、ログインできました♪
現在、www.ありとwww.なしで、それぞれ表示されます。
WordPressしか置いていないのですが、リダイレクトされないです。>マルチドメインとして使用する(推奨)
の設定になっていますが、これは始めからwww.ありで登録するべきだったのでしょうか?また、「さくらHTTPS正規化用の記述の下」というのは、
.htaccessのどこの部分でしょうか?よろしくお願いいたします。
あ、いやさくらのコンパネでドメインを登録する際は通常wwwはなしでよいと思います。
さくらの常時SSL化プラグインで正しくHTTPSで動作している場合、htaccessの記述は以下のようになっていると思います。
# BEGIN Force SSL for SAKURA # RewriteしてもHTTPS環境変数を有効にする SetEnvIf REDIRECT_HTTPS (.*) HTTPS=$1 # 常時HTTPS化(HTTPSが無効な場合リダイレクト) <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{ENV:HTTPS} !on RewriteCond %{REQUEST_URI} !/wp-cron\.php$ RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </IfModule> # END Force SSL for SAKURA # 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
で、私の環境では
# END Force SSL for SAKURA
と
# BEGIN WordPress
の間にwwwありに正規化する記述を入れて正しくwwwにリダイレクトされています。返信ありがとうございます!
# END Force SSL for SAKURA
と
# BEGIN WordPress
の間にRewriteEngine on
RewriteCond %{HTTP_HOST} ^(〇〇\.com)$ [NC]
RewriteRule (.*) http://www.〇〇.com%{REQUEST_URI} [R=301,L]
(〇〇にドメイン名)を記述してアップロードすると、
https://gyazo.com/bd8053fbbb8db92731e9404968e22b60
のような画面になり、パスを入れても通らなくなります。これは、どんな原因が考えられるでしょうか?
このコードだとリライト後、http://にリダイレクトされていますよ。
https:// にしましょう。それと、リライト処理を変更した場合、前の内容がブラウザキャッシュとして残っている場合があります。
キャッシュ削除するか別のブラウザで確認するとよいです。のむらけいさん、返信ありがとうございます!
灯台下暗し、sが抜けていました。
sを入れたら、ちゃんとしたログイン画面になりましたが、
何度やっても、ログインできない状態です。.htaccessの
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(〇〇\.com)$ [NC]
RewriteRule (.*) https://www.〇〇.com%{REQUEST_URI} [R=301,L]を外すと、ちゃんとログインできます。
外すとログインできるため、上記の記述が悪いのかもしれないです。
リダイレクトの記述が間違っていたりするでしょうか?一応、こちらのさくらのレンタルサーバの環境で正しく動いているものは以下のようにしています。
# BEGIN Force SSL for SAKURA # RewriteしてもHTTPS環境変数を有効にする SetEnvIf REDIRECT_HTTPS (.*) HTTPS=$1 # 常時HTTPS化(HTTPSが無効な場合リダイレクト) <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{ENV:HTTPS} !on RewriteCond %{REQUEST_URI} !/wp-cron\.php$ RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </IfModule> # END Force SSL for SAKURA # Add www <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_HOST} ^example\.com$ RewriteRule (.*) https://www.example.com/$1 [R=301,L] </IfModule> # 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
ただ、@ryomk さんの記述方法で書いても問題なくログインできました。
「ログインできない状態」というのがどういう理由なのかをもう少し分かると良いです。
エラーメッセージが出るのか、真っ白になるのか。。。
たとえばGoogle Chromeのデベロッパー・ツールでエラーステータスコードが何番なのかを調べたり、Redirect Pathという拡張機能を入れて、リダイレクトがどのように動いているかをチェックしたりしてみると良いと思います。何度も返信していただき、ありがとうございます!
>「ログインできない状態」というのがどういう理由なのかをもう少し分かると良いです。
それが、エラーメッセージなども出ないのです。
画面も切り替わらず、一旦ユーザー名とパスが消えて、
また、同じログイン画面になります。なんか、「弾かれている」みたいな感じです。
.htaccessの内容は次の通りです。
# BEGIN Force SSL for SAKURA
# RewriteしてもHTTPS環境変数を有効にする
SetEnvIf REDIRECT_HTTPS (.*) HTTPS=$1# 常時HTTPS化(HTTPSが無効な場合リダイレクト)
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{ENV:HTTPS} !on
RewriteCond %{REQUEST_URI} !/wp-cron\.php$
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
# END Force SSL for SAKURA# BEGIN SAKURA Internet Inc.
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
<FilesMatch “\.(css|js)$”>
ExpiresDefault “access plus 1 week”
</FilesMatch>
<FilesMatch “\.(gif|jpe?g|png)$”>
ExpiresDefault “access plus 1 month”
</FilesMatch>
</IfModule>
# END SAKURA Internet Inc.RewriteEngine on
RewriteCond %{HTTP_HOST} ^(〇〇\.com)$ [NC]
RewriteRule (.*) https://www.〇〇.com%{REQUEST_URI} [R=301,L]# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /naka/
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /naka/index.php [L]
</IfModule># END WordPress
一旦、さくらサーバー関連のプラグイン以外を停止してみようと思いましたが、
「Protect Uploads」というプラグインだけが、どうしても停止できないです。停止しようとすると、「このページは動作していません」と出ます。
「Protect Uploads」の説明欄に、
Protect your uploads directory. Avoid browsing of your uploads directory by adding a htaccess file or an index.php file.
とあるため、これが干渉しているような気がします。
- トピック「www.ありにリダイレクトすると、ダッシュボードにログインできなくなる」には新たに返信することはできません。