質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

Q&A

解決済

1回答

585閲覧

Google検索(オーガニック検索)からのリダイレクトがうまくいかない

omochi-

総合スコア5

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

0グッド

0クリップ

投稿2019/11/18 08:52

編集2019/11/18 13:38

teratailでの質問が不慣れで申し訳ございません。
質問内容でわかりにくい箇所がございましたら都度、修正させていただきますのでご指摘いただければと思います。

色々、自分で試したのですが知識不足で見当違いなことをしている気がします。
長文になりますが、起こっている現象や環境等を下記で説明しております。ご教授いただけますと幸いです。

環境

HPの移転に伴い、リダイレクト処理を行いました。

HPは移転前と移転後ともに
・エックスサーバー利用
・WordPress使用

リダイレクト処理方法は、エックスサーバーのサーバーパネルから転送設定を行いました。

したいこと

・リダイレクトの際に、エラーページが表示されないようにしたい
・サイトに訪問するユーザーのキャッシュを強制的に消したい

起こっている問題

通常のリダイレクト処理はうまくいっているようですが、Googleからオーガニック検索をした際に、うまくいっていないことを確認しました。
検索結果に表示される移転前HPのURLをクリックするとURLが/(スラッシュ)のない状態でアクセスされ、下記のようなエラーページが表示されます。
ドメイン名を伏せさせていただく都合上、
移転前URLをhttps://before.com
移転後URLをhttps://after.com
Google検索での検索結果(拾われたページ)を「https://before.com/サンプルページ」
とさせていただきます。
(拾われたのは日本語URLのページだったため、例も日本語の「サンプルページ」とさせていただきます)

実際にアクセスすると、/(スラッシュ)が抜けた状態にURLが書き換わり、それが原因で下記のようなページが表示されます。

このサイトにアクセスできません。 https://after.comサンプルページ のサーバーの IP アドレスが見つかりませんでした。

気になったこと、気づいたこと

・「https://after.comサンプルページ」このURLをコピペして、別のところに貼り付けると
https://after--com-k8wuv9s3t9apw354/
このように.(ドット)が--(ハイフン)に書き換わったURLになっておりました。
一般的に日本語URLは、「%」で囲まれたものに書き換わると思われるのですが、、、。

それから表題のトラブルは、移転先では存在しないページに限って起きているのではと感じました。
移転前には
https://before.com/サンプルページ
が存在しますが、移転後のサイトでは
https://after.com/サンプルページ
は存在しません。

試したこと

スラッシュがないことが原因かと思い、下記を試しましたが見当違いでした。

・.htaccessのリダイレクト先のURLの末尾に/(スラッシュ)を追加
→変化なしでした。
.htaccessコードは下記の通りです。
エックスサーバーの転送設定で自動で生成されたものです。
最後の行のURLに自分で/(スラッシュ)を追記しました。

SetEnvIf Request_URI ".*" Ngx_Cache_NoCacheMode=off SetEnvIf Request_URI ".*" Ngx_Cache_StaticMode # 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 Redirect permanent / https://after.com/

・function.phpを編集して末尾に/(スラッシュ)を追加
→こちらの記事を参考にしました。
https://blog.webico.work/htaccess02

専門知識がない状態でこの辺りを触るのは、これ以上は危険かと思い、こちらで質問させていただきました。
何卒、よろしくお願い申し上げます。

現状

根本的な解決ではないのですが、とりあえず以下の1〜3の対応をしたところ、エラーページについては解消されました。
ただ別の問題が発生しました、、、。

1 移転元から移転先へのリダイレクト設定を解除
2 WordPressのメンテナンス用のプラグイン「WP Maintenance Mode」を使用して、リダイレクト
3 どのページにアクセスしても、きちんと移転先のTOPページへリダイレクトされて、「このサイトにアクセスできません。」のエラーページは表示されなくなり解決?

しかし、この状況はシークレットモードなどのブラウザ履歴(キャッシュ?)が残っていない状態のときだけに限ります。
一度でもエラーページにアクセスしたことがあるユーザーは、キャッシュの力で再びエラーページが表示されてしまう状態なのかと。
逆にいうと、アクセスするユーザーのキャッシュを強制的にクリアにするような方法があれば、解決するかもと素人ながら考えました。
調べたところ、やはり.htaccessの編集が必要のようで、下記コードを移転元サイト(https://before.com)に貼り付けたのですが、何も起こらずでした;;

SetEnvIf Request_URI ".*" Ngx_Cache_NoCacheMode=off SetEnvIf Request_URI ".*" Ngx_Cache_StaticMode # 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] Header set Pragma no-cache Header set Cache-Control no-cache </IfModule> # END WordPress

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2019/11/18 09:24

質問に書かれている内容だけでは再現ができないので... 具体的なURL の例(ドメイン部分は、example.com 等の例示用ドメインを使ってください。)を数例と .htacess に記載しているリダイレクトのコードを記載してください。
omochi-

2019/11/18 09:45

ご返信、ありがとうございます。 コードを追記いたしました。 他にも説明不足等がございましたら、お手数ですがご教授お願いいたします。
guest

回答1

0

ベストアンサー

いまいち再現ができないのですが、移転で、URL がかわるのはドメイン名だけということで良いのですよね?

そして、Google 検索で出る旧URL は、正しいURL ということですね。

移転元のドメインの .htaccess の
RewriteEngine On `の次の行に

RewriteRule ^(.*) http://new.example.com/$1 [R=301,L]

のように記載するとどうなりますか?

投稿2019/11/18 11:07

編集2019/11/18 17:52
CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

omochi-

2019/11/18 12:01

度々、ありがとうございます。 >移転で、URL がかわるのはドメイン名だけ はい。ご質問の主旨とずれているかもしれませんが、移転前と移転後で、ないページが存在します。 移転前は https://before.com/サンプルページ が存在しておりますが、移転後に https://after.com/サンプルページ という「サンプルページ」は存在しません。 検索結果で拾われたのは https://before.com/サンプルページ ですが、アクセスすると https://after.comサンプルページ という/(スラッシュ)が抜けたURLになってしまい結果、「ページがみつかりません」のエラーとなります。 >Google 検索で出る旧URL は、正しいURL はい。検索結果上では、旧URLの正しいURLが表示されます。 アクセスすると新URLに書き換わった上で、/(スラッシュ)が抜けた状態でアクセスされます。 .htaccessにいただいたコードを貼り付けたところ500エラーになってしまいました。 すみません;; あと、自分なりに気になったところがあったので、「試したこと」の上に情報の追記をこの後させていただきます。
CHERRY

2019/11/18 17:54

すいません。 RewriteRule の後ろにピリオドがついていましたので、このピリオドは不要です。
omochi-

2019/11/20 14:37

返信が遅くなり、申し訳ございません。 ありがとうございます!直りました! シークレットモードと通常の検索、両方ともエラーページが出なくなりました。 ミソは"$1"の部分だったのでしょうか、、、。 何はともあれ大変、感謝です。 今後、自分でも.htaccessについてもっと勉強しようと思います。 CHERRYさま、本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問