エックスサーバーで日本語パーマリンクをリダイレクト「サイト転送設定は使えない」

日本語を含むURL(パーマリンクまたはスラッグ)は、エンコード(URLエンコードまたはパーセントエンコーディングとも呼ばれます)されて英数字に変換されると意味不明な文字列になるため、ユーザーに不信感を与える傾向があります。

石神

筆者は日本語URLがデメリットと感じています。シンプルな英数字に301リダイレクトさせておくべきだと思っています。

この記事ではエックスサーバーから日本語URLを自動転送させる方法について記述していきます。

日本語URLのデメリット

日本語のパーマリンクがエンコードされる理由はURLの文字列の制約があるからです。

URLは、Web上のリソース(ページや画像など)のアドレスを指定するための文字列です。しかし、URLは英数字や一部の記号しか許可されていません。

日本語のような多くの言語は、URLに直接使われることができる文字ではありません。URLエンコードは、URL内で使用できない文字を安全に表現する方法を提供します。

例えば、下記のURLがエンコードした場合は以下のようになります。

https://ドメイン名/日本語/

https://ドメイン名/%e6%97%a5%e6%9c%ac%e8%aa%9e/

石神

記事のタイトル名=パーマリンクに設定していてURLが長いサイトもちょこちょこ見かけます。

例えば下記のようにパーマリンクの日本語文字数が多ければ、エンコードの文字列の数も増えます。

https://ドメイン名/日本語を含むパーマリンクは不信感与えるかも

http://ドメイン名/%e6%97%a5%e6%9c%ac%e8%aa%9e%e3%82%92%e5%90%ab%e3%82%80%e3%83%91%e3%83%bc%e3%83%9e%e3%83%aa%e3%83%b3%e3%82%af%e3%81%af%e4%b8%8d%e4%bf%a1%e6%84%9f%e4%b8%8e%e3%81%88%e3%82%8b%e3%81%8b%e3%82%82/

そのため、SNSなどでシェアされにくくなったり、シェアされてもユーザーがアクセスすることに抵抗感を持つ恐れがあります。

石神

ここまで長いURLだと怪しいサイトではないか?と疑うユーザーも一定数いるかと思います。

SEOで最適なパーマリンクのつけ方

SEO対策においても、意味のあるキーワードを含むパーマリンクが重要であることを理解することが重要です。

シンプルな URL 構造を作成する。論理的かつ人間が理解できる方法で URL を構成できるよう、コンテンツを分類します。

Google検索セントラル

上記の説明だと「ID」や「数字」での表記も良くないという事になります。

英数字で適切なキーワードを組み込んだ見やすく、コンテンツと整合性の取れるパーマリンクを作成することで、ユーザーの関心を引きつけ、SNSなどでのシェアを促進することができます。

ユーザーが直感的に理解できるパーマリンクを提供することで、ウェブサイトへのアクセスが増え、SEOの向上につながるでしょう。

ではエックスサーバーから日本語URLをリダイレクトさせる方法について解説していきます。

エックスサーバーのサイト転送設定では日本語URLのリダイレクトは不可能

エックスサーバーのサーバーパネルには「サイト転送設定」という機能があります。

ただこちらのリダイレクト設定では下記のエラー表示が出てきて、日本語URLをリダイレクトさせることは出来ません。

「アドレスに利用できない文字(半角英数字や利用可能な記号以外)が含まれています。

試しにエンコードさせて進めてみましたが、設定することは出来ませんでした。

エックスサーバーで日本語URLをリダイレクトさせるにはhtaccessファイルを編集する必要があります。

Xserverのhtaccessファイルから転送させる方法

%エンコーディングを「\x」に変換

ここではグーグルスプレッドシート一括変換しています。

htaccessファイルにリダイレクトコードを挿入

エックスサーバーのサーバーパネルから編集可能。

動作確認

旧URLから新URLにリダイレクトされているか確認しましょう。

htaccessファイルへの記述方法は以下になります。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule 旧パーマリンク ドメイン名+新パーマリンク [R=301,L]
</IfModule>

例えば下記のURLを当てはめてみます。

https://ドメイン名/日本語/
https://ドメイン名/%e6%97%a5%e6%9c%ac%e8%aa%9e/

https://ドメイン名/japanese

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule %e6%97%a5%e6%9c%ac%e8%aa%9e/ https://ドメイン名/japanese/ [R=301,L]
</IfModule>

実はこれではリダイレクトされないので、「%」の部分を「/x」に変換させる必要があります。

「%」を「\x」に変換させる

変換させることで正常にリダイレクトさせることができます。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule \xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e/ https://ドメイン名/japanese/ [R=301,L]
</IfModule>

スプレッドシートで置換させる

「%」を全て「\x」に手作業で直していると大変なので、Googleスプレッドシートの「編集」→「検索と置換」を選択し、「%」を「\x」に一括置換させます。

htaccessファイルに書き込む

htaccessファイルの一番上にリダイレクトコートを貼り付けたら保存しましょう。既にコードが記述されていますが間違っても削除しないようにしてください。

保存出来たら旧URLから新URLに自動転送されているか動作確認を行いましょう。

複数のURLをリダイレクトさせる場合の記述

複数リダイレクトさせたい場合は以下の記述方法で動作します。

リダイレクトさせたいURLが複数ある場合の記述

<IfModule mod_rewrite.c>
RewriteRule 旧パーマリンク 新URL [R=301,L]
RewriteRule 旧パーマリンク 新URL [R=301,L]
</IfModule>

またリダイレクトさせたいURLがたくさんある場合はグーグルスプレッドシートなどで、上記のような記述を行いコピペしたら作業効率が上がるかと思います。

ブログ一覧へ