WordPressの不要ディレクトリをTOPにリダイレクトする方法

.htaccess

WordPress

WordPressのサイトマップ自動生成で「sample-page」というディレクトリが作られていました。このURLにアクセスすると404ページとして認識されている。なぜだ??理由がわからないので、しばらく放って置いていたが、先日 サチコ から「ページがインデックスに登録されなかった理由」との内容でメールが届いた。
原因を調べてみると「https://www.web.imagemo.net/sample-page」のページが存在しない。とのこと。ああ、はいはい。それ知ってる。と心の中で1人ツッコミをしたが、なんか直して置いた方が良さそうなので重たい腰を上げたという記事の内容です。結論は .htaccess に記述することで解決しました。さくっとコードだけ知りたい方は「.htaccessの記述方法」だけを見てくださいね!

WordPressのfunctions.phpに書く→失敗

【結果】このやり方は機能しませんでした

WordPressでリダイレクトさせたいならfunctions.phpに記述する方法はネットでたくさんありましたが、ワタシの環境のせい?やり方が悪い?などなど理由はわからないが機能しませんでした。。。
何度も、何度も試してもうまくいかないので、、、ムキーとなった結果もう、.htaccessに書けばいいんじゃね?
という結論に至りました!

なんで余計なディレクトリが作られる?

そもそも、なぜ?意図しないディレクトリがあるのでしょうか

これは調べてもわかりませんでした!「category」「archives」というディレクトリはなんとなく心当たり(本質はわかっていない)があるのだが「sample-page」というのが意味わからん。もしかしたらサンプル投稿記事「Hello World!」のページがサイトマップにインデックスされていた可能性はあるが、もう、それは削除済みなのでなんとも言えない。サイトマップ自動生成でなんらかしらのWordPressのプラグイン →「XML Sitemaps」のプログラムでディレクトリのURLを生成しているのは確かなのだが、深堀りしてもあまりメリットがなさそうなので秒であきらめました!
とはいえ、現時点で自動生成されているURLは下記の通り。今後また、勝手にディレクトリが増えるかもしれないので念の為、記録しておきます!
現時点では 「category」「archives」「sample-page」の3つのディレクトリです。
ちなみに「XML Sitemaps」プラグインは便利なので引き続き利用しています。

.htaccessの記述方法

functions.phpではうまくいかないので.htaccessに記述する

すでに.htaccessファイルを使っている方はこのコードを下部に追加(文字列は適宜変更)してください。.htaccessファイルを使っていない方はテキストファイルを開いて「.htaccess」で保存すれば完成です。.htaccessファイルといってもただのテキストファイルなので拡張子を.htaccess変更してあげればOKなんです。


# ------------------------------------------------------------------------------
# wordpressのサイトマップ自動生成で404になるページを全てリダイレクトする 2023年10月17日
# ------------------------------------------------------------------------------
RewriteEngine on
RedirectMatch 301 ^/category/$ https://www.web.imagemo.net/
RedirectMatch 301 ^/category$ https://www.web.imagemo.net/
RedirectMatch 301 ^/archives/$ https://www.web.imagemo.net/
RedirectMatch 301 ^/archives$ https://www.web.imagemo.net/
RedirectMatch 301 ^/sample-page/$ https://www.web.imagemo.net/
RedirectMatch 301 ^/sample-page$ https://www.web.imagemo.net/

上記の内容は「category」「archives」「sample-page」のディレクトリにアクセスがあった場合は全てトップページにリダイレクトするということです。スラッシュのあり・なしのスマートな書き方がわからなかったのでとりあえずスラッシュのあり・なしどちらも対応しています。
というわけで、今後「XML Sitemaps」プラグインでサイトマップ自動生成でまた意図しないディレクトリが追加されたり、何らか意図的にトップにリダイレクトさせたい場合は、この.htaccessに追加していけばOKですね!

まとめ

  • 意図しないディレクトリがサイトマップURLに生成される理由は不明である
  • functions.phpに書く方法では解決できなかった
  • .htaccessファイルは、ただのテキストファイルである
  • ひとまず、メリットがないことは秒であきらめても問題ない
  • 「XML Sitemaps」プラグインは便利なので引き続き利用している