ABCウェブエンジニアblog

Webデザイナー/エンジニア/講師のホームページ・ウェブサイト制作の備忘録

URLを間違えたので正しくリダイレクトさせるJavaScript (はてなブログの場合)

はてなブログでURLを間違って投稿した時503リダイレクトさせるJavaScript解説 よくやってしまいがちな日本語タイトルのままのブログ記事投稿。
一応モダンブラウザだと問題なく日本語URLで表示されますが、サーチコンソールでチェックしづらく、SEO的にもイマイチそうな文字化けの可能性があるURLになってしまいます。
ですので、気づいたらURLを正しく半角英数の自然なものに変更し、JavaScriptを使ってリダイレクトさせています。

その際につけてもらったはてなスターが消えてしまうのは残念で申し訳ないところではありますが、いた仕方無し。
具体的な方法を知りたい方は是非当記事をご覧頂ければ幸いです。

503リダイレクトさせるJavaScript

以下URLを
はてなブログ管理>デザイン設定>カスタマイズ>ヘッダ「ブログタイトル下」
に記載します。

<script>
if ( (new RegExp( "(entry/間違えたURL)$" )).test(window.location.pathname)) {
  window.location.pathname="entry/新しいURL";
}
</script>

リダイレクトしたい間違えたURLのentryの部分以降を2行目「間違えたURL」の部分に記載。
リダイレクト後の正しいURLのentry以降を「新しいURL」に記載します。

【1分で設定完了】はてなブログで、記事のURL変更してリダイレクトする方法とコード紹介 - 小宇宙、燃えてる?

JavaScriptコード詳細解説

通常はリダイレクトさせる必要がないので、該当URLに来た場合のみリダイレクトを実行させるための条件分岐に正規表現が用いられています。

new RegExp("〇〇〇〇").test(window.location.pathname)

new RegExp正規表現インスタンスを生成し、"〇〇〇〇"部分の文字列に当てはまる部分がURLに含まれているかどうかをtest()を用いてチェックしています。
testメソッドは、引数に入る値が正規表現に含まれる文字列か判定してtrue/falseを返すという処理を行います。
それによってif文と合わせて該当URLだったら〜〜という意味になります。

あとは window.location.pathname を用いて新しいURLへとリダイレクトさせているだけです。

詳細はリファレンスを参照

RegExp.prototype.test() - JavaScript | MDN

上記のようなリファレンスを見て理解できるようにしっかり基礎を身に付けたい方は書籍もおすすめです。

まとめ

JavaScriptに慣れていないとコピペで済ましがちですが、コードの意味を理解するため少し時間をかけて読み解くことも学習の上では大事です。
ブロガーさんもなんだかんだコーディング知識は必要になる場面が多いので、ある程度HTML/CSS/JavaScriptなど読めるようになると有利でしょう。

シンプルなコードなのでササッと書けるように自身でメモしておいたり、こういった記事をブックマークしておくと後から見返せて便利ですね。
私もブログを書いておくことで備忘録として活用できて一石二鳥。 お役に立てていたら幸いです。