Apacheのmod_rewriteで日本語にマッチさせたい(引用)
2014/11/22
日本語URL(マルチバイトURLエンコード文字)を含むURLを、
Apacheのリダイレクト設定を行う際には.htaccessに対して転送元のURLを指定するのですが、
そのままURLを設定した場合には、エラーとなってうまく転送が行われません。
ここではそんな転送の指定方法をご紹介してくれていたサイトに出逢えましたのでご紹介します。
はじめに
ブログなどを利用していて、最初のうちはわからないままに投稿を行っていたために、
スラッグなどを割り当てることもなく部分的に日本語URLが割り当てられてしまうこともあるでしょう。
カテゴリやタグなどのURLが日本語URLになってしまうことが多いのではないでしょうか。
そうした日本語URLを含むサイトを、
自分で運営するWordPressなどに引っ越す際に困るのがリダイレクト設定の方法です。
うまく転送が行えない例
たとえば以下のようなURLを転送して、レンタルサーバ上のWordPressなどに対して転送設定する場合です。
元URL
「http://domain.com/tag/%E5%80%8B%E5%B1%95」
この元URLをエンコードなしに戻すと、以下のようになります。
「http://domain.com/tag/個展」
元のURLがどうであれ、
各ページごとにhead内に対してmetaタグによる転送先URLへリフレッシュを指定することで、
日本語を含まないURLに転送をかけることも可能です。
そうした方法を利用される場合には特に問題はないと思います。
ただこの投稿を読まれている方は、そもそも何らかの理由があって読まれていることでしょう ^^;
何らかの理由があって日本語URLを含む形で、
自身のサーバに対してアクセスをさせ、そのアクセスから実際のURLへの転送を行いたい場合には、
理由はとにかく、日本語URLにて.htaccessにマッチさせる必要があります。
単純に考えれば.htaccessに対して以下のように設定をおこなえば転送されそうに思います。
しかし、これではさっぱりうまくいきません。
1 |
RewriteRule ^archives/tag/%E5%80%8B%E5%B1%95$ http://newdomain.com/archives/tag/koten/ [L,R=301] |
日本語文字列をApacheに認識されるように変換
こうした日本語URLの転送を行うには、
以下のサイトで変換ツールを公開してくださっている方がおられます。
私はこの方のサイトでうまく設定が行えたので、そのまま読まれればわかると思います。
Apacheのmod_rewriteで日本語にマッチさせたい (抜粋引用)
ところがApacheにはもうひと癖あって、次のような特徴があります。
- 「%(パーセント)」部分が「\x」に変換される。
- エンコード文字の大文字の部分が小文字に変換される。
こちらでは日本語文字列をApacheに認識させるための変換ツールを公開してくださっています。
で、変換した文字列が以下のような文字列になります。
日本語文字列単純エンコード前(変換したい文字列は「個展」としています)
1 |
%E5%80%8B%E5%B1%95 |
日本語文字列変換後
1 |
\xe5\x80\x8b\xe5\xb1\x95 |
変換の手順は簡単です。まずはサイトにアクセスします。
中ほどの変換器エリアに対して変換したい日本語文字列を入力し、
[Apache用URL文字列に変換]をクリックします。
すぐに変換後の文字列が赤で表示されます。
このようにして.htaccessに日本語URLを含むマッチングルールも簡単に指定することができます。
最初に例示した例を変換後の文字を利用すると、以下のようになります。
1 |
RewriteRule ^archives/tag/\xe5\x80\x8b\xe5\xb1\x95/$ http://newdomain.com/archives/tag/koten/ [L,R=301] |
日本語URLはいろいろな場面で難解なエンコード文字列を利用しなければならず、
非常に面倒な作業が増え、まだどうしても敬遠してしまいますね。
日本語ドメインがSEO的にも効果があるなどとも言われますが、テストサイト以外にはちょっとまだ使いにくいですね。
さいごに
本来ならこうした日本語URLを私は含まないようなスタンスでサイト運営をおこなっているスタンスなのですが、
たまにうっかりそうしたURLで公開してしまう場合もあります。
やってしまったのはもう仕方がないことで、転送する際には日本語URLに対応して転送を行いたいものです。
Apache,Apache Hadoop,Apache Subversion,Hadoop,HDFS,HBase,Hive,Mahout,Pigは、
Apache Software Foundationの米国およびその他の国における登録商標または商標です。
ApacheソフトウェアはApache Software License (原文)および
Apache License, 2.0 (原文)に基づきOpen Source Initiativeに承認されライセンスされています。
関連記事
-
(mod_fcgid on 2.0.x)windowsでCGIをFastCGIで実行するように設定したかった
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
(lounge mod_fcgid on 2.4.6)windowsでCGIをFastCGIで実行するように設定する
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
(mod_fastcgi on 2.0.x)windowsでCGIをFastCGIで実行するように設定する
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
Apacheの過去バージョンがダウンロードできるアーカイブ先(メモ)
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
IPアドレスから.htaccess用のネットマスク変換できるサイトが便利
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
PHP.iniに設定する設定値はhttpd.confや.htaccessに対しても設定が可能
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
mod_fcgidの過去バージョンがダウンロードできるアーカイブ先(メモ)
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
ローカル環境へのApache設置
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
[コンピュータに MSVCR110.dllがない]とApacheMonitor.exeを起動して言われた場合
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
(mod_fastcgi on 2.2.x)windowsでCGIをFastCGIで実行するように設定する
Google or AdMax Promotion(it) 禁断の機能がau公式 …