web関連

【WordPress】固定ページのURLの最後にスラッシュをつける方法

【WordPress】固定ページのURLの最後にスラッシュをつける方法

URLの末尾に「/(スラッシュ)」をつけるつけないを統一することで重複コンテンツを避けることができるらしいので「/(スラッシュ)」ありで統一した時の備忘録

そもそもなぜ統一化するのか?

トップはどっちでもいいのだが、下層ページが「/(スラッシュ)」ありなしで別ページ扱いされてしまう

// ○同じページとして認識
https://sample.com
https://sample.com/

// ×別ページとして認識
https://sample.com/company
https://sample.com/company/
下層はスラッシュありで統一化したいと思います

固定ページのURLの最後に/を入れる

以下のコードをfunction.phpに記述

function ex_trailingslashit($string, $url_type) {
  if ($url_type != 'single'){
    $string = trailingslashit($string);
  }
  return $string;
}
add_filter('user_trailingslashit', 'ex_trailingslashit', 10, 2);

ざっくり説明すると、if ($url_type != 'single')で「投稿」ページは除外しています。
「79.html」みたいなスラッグにしたいときに後ろに「/(スラッシュ)」つくのはおかしいからね。

それに「投稿」であれば「パーマリンク」の設定で最後尾に「/(スラッシュ)」入れていれば勝手に「/(スラッシュ)」ありで統一できるから除外。

条件分岐して「投稿」以外のページであれば「trailingslashit」関数で末尾に「/(スラッシュ)」を追加しています。

おまけ:.htaccessでのリダイレクト方法

どこで使うんかわからんが.htaccessで「/(スラッシュ)」なしからありへのリダイレクト方法(メモ)

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !/$
    RewriteCond %{REQUEST_URI} !.[^/.]+$
    RewriteRule .* %{REQUEST_URI}/ [R=301,L]
</IfModule>

wordpressでやろうとすると無限リダイレクトされてページが見れなくなるから注意
※「パーマリンク」設定で投稿を「/(スラッシュ)」なしで設定していた場合になった

参考サイトとか見て「/(スラッシュ)」ありなし勉強したけど、頭が痛くなるな…

参考

▼URLの最後に付ける「トレイリング スラッシュ」ありなしの違いはSEOに影響するのか?
https://www.suzukikenichi.com/blog/differences-between-trailing-slash-and-non-trailing-slash/

▼URL末尾のスラッシュ「/」有無は、別物だが同等に扱う
https://seolaboratory.jp/91222/

「投稿」ページは「パーマリンク」の設定で最後に「/(スラッシュ)」入れる入れないで統一化できるけど「固定」ページは管理画面上で操作できないからfunction.phpに記述するしかないっぽい。