HatenaPocketWordPressでブログを運営するのに、今まで使っていたさくらサーバーからMixhostに引っ越した。ついでに「ブログAの記事をいくつかブログBで使いたい」と思い、記事をいくつか移動させることにした。記事をコピペして新しいブログで公開し、「さて元ブログから新ブログへと301リダイレクト...あれ?反映されないな?(以下略)」で48時間くらいは.htaccessと戦い続けた。反映されな過ぎて目が飛び出た。どちらかと言うと解決したときにあまりにも簡単なコードで突然301リダイレクトが上手く反映されたからそっちで目が飛び出た。「どうしても301リダイレクトが反映されない」「.htaccessの変更が反映されてる気がしない」と疲れきったあなたの助けになれば幸いです。【.htaccess】301リダイレクトがどうしても効かない...まず今回の問題が起こった僕の環境から。ドメインA(mofamofa.com)のサブディレクトリ(hogehoge)にWordPressをインストール(mofamofa.com/hogehoge/)。ドメインAサブディレクトリのトップ階層に.htaccessを置いた(mofamofa.com/hogehoge/.htaccess)。.htaccessを削除すると下位ページが全て404エラーになってしまったため、この時点で「.htaccessがちゃんと動いている」ということは分かった。.htaccessが動いているかどうかを確認しておくことは大切。あと以下は人によって違ってくる部分だけど、僕の場合これが少しややこしかったせいで原因究明が上手くできなかった。結論は、【.htaccessの1行目】に以下のように記述したら解決した。https://mogamoga.com/english-blog-01「は?こんなの知ってるし、これも試して反映されないからググってんだろカス!」と思ったかもしれない。僕だって死ぬほど調べて.htaccessに対する知識レベルが5フィートくらいUPする程度には詳しくなった。その過程でこのコードは試していたし、それでも反映されなかったから遠回りをしてしまった。ここで大切なのは、「まずはできるだけシンプルな方法で原因を特定すること」だ。以下のことを試してみてほしい。できるだけシンプルな方法で原因を特定する.htaccessの一行目に以下のコードを貼ってみる。※当然だけど.htaccessのバックアップは取っておく。https://www.google.co.jpこれで「あまり読まれてない記事.html」というパーマリンクの記事にアクセスするとグーグルの検索トップにリダイレクトされる。リダイレクトされるか確認したらすぐにこのコードを削除して更新しておこう。これで今「あれ!?リダイレクトされた!!今まで全然動かなかったのに!?なんで!?!?」と喜びが滲み始めている同志もいるのではないだろうか。これさえ動いたことが確認できればあとはURLを変えるだけで上手くリダイレクトされるため、ゴールは目前だ。原因から遠ざかってしまうこともある他にもまず.htaccessが動いているかを確認するためのコードとして、色んなサイトで紹介されているのがこちら。http://www.google.com/僕の場合、ちゃんと.htaccessの1行目にこれを記述したのに全く効かなかった。存在しないページにアクセスすると「お探しの記事はありません。このせいで「あれ?もしかして.htaccessが動いていないのかな?」と遠回りすることになった。こんな感じで「コードの記述方法が間違っているのではないか」という頭で調べていたせいで、原因を上手く特定することができず遠回りをしてしまった。今回のことで「何よりもまずは原因を究明するのが大事」だということを改めて実感した。301」の書き方と注意点コードの書き方で注意しないといけないことがいくつかあって、少し違うだけで上手くリダイレクトされなかったりする。リダイレクトがちゃんと効くことは分かったのだから、URLを正しく記述することで確実にリダイレクトさせることができるので落ち着いてゴールまで走り切ろう。半角スペースで区切るまずは半角スペースの位置。見れば分かるけど間違ってしまいやすい部分かもしれない。redirect[スペース]301[スペース]リダイレクト元の相対パス[スペース]リダイレクト先の絶対パスという形になるように。リダイレクト元のスラッシュに注意スラッシュの位置に注意が必要な場合も。https://mogamoga.com/english-blog-01前者リダイレクト元のURLの先頭にはスラッシュがあり、末尾にはスラッシュがない。後者リダイレクト先は絶対パスなので問題ないはず。リダイレクト先URL末尾のスラッシュはあってもなくてもどっちでもOK。「リダイレクト元」の相対パスで指定している部分のスラッシュが重要で、この末尾にスラッシュを付けてしまうことで正確にリダイレクトされなくなってしまうことも。つけていても問題なく正常にリダイレクトされることもある。日本語ドメインと日本語パーマリンクの301リダイレクト日本語ドメインと日本語パーマリンクがまたややこしい。リダイレクト元の記事に日本語や記号をパーマリンクとして使用している場合、これはエンコードせずにそのまま記述しなければいけない。.htaccessみたいなファイルに日本語とか記号書いていいの!?って感じだけど、エンコードしちゃうと逆にダメだったりする。逆にリダイレクト先に日本語ドメインや日本語パーマリンクを使用している場合、こちらは全てエンコードしておかなければいけない。これもややこしくて「ちゃんとリダイレクトされないのはエンコードが原因?」なんて考えてしまって遠回りした。複数記事をリダイレクトさせる際の.htaccess記述方法は、以下のようにシンプルに書いていくだけ。permanent」と書いてもいいみたい。リダイレクトチェックツールに注意!あとリダイレクトチェックツールも信用し過ぎて痛い目を見た。ブラウザだとキャッシュで上手くリダイレクトされているか確認できないため、リダイレクトチェックツールを使う方がいいと色んなブログで紹介されていた。それでずっと使っていたのがリダイレクトチェック|SEOツール【ohotuku.jp】。これで「リダイレクトされてません」みたいに言うから信じてたのに、リダイレクトに成功した状態でチェックしてみると同じように「リダイレクト回数ゼロ、できてません」みたいにおっしゃる。検索エンジン最適化でチェックしてみると、「https://がBadだから上手く検証できないよ」みたいなことを返してくれた。