LoginSignup
3
2

More than 5 years have passed since last update.

アンダーバー(_)をハイフン(-)にお引越し

Last updated at Posted at 2015-03-31

別ドメインにお引越しするついでに、アンダーバーをハイフンにしたいケース。引越し前がApacheというのは、まだよくある話だと思うのでメモ。.htaccessにこんな感じで書けばOK。

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteRule (.*)_(.*) $1-$2 [N=10]
RewriteRule (.*) http://somewhere.dom/$1 [R=301]
</IfModule>
  • RewriteRule 1行目: 一つ目の_-に置換し、_が無くなるまで繰り返す
  • RewriteRule 2行目: 新しいドメインに転送

[N]フラグ

公式サイトの例だとこんな感じ。パスに含まれるAをすべてBに変えます。

RewriteRule (.*)A(.*) $1B$2 [N]

ただし、ドキュメントにも

Use with extreme caution

と書かれているように、設定を失敗すると無限ループするので注意が必要です。バージョン2.4.8以降であれば、[N=10]のようにして繰り返し回数を制限できます。

[DPI]フラグ

最初の例だとうまく動かない場合、[DPI]フラグをつけて、PATH_INFOを削除すると解決することも。レンタルサーバとかの.htaccessは謎が多い...

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteRule (.*)_(.*) $1-$2 [N=10,DPI]
RewriteRule (.*) http://somewhere.dom/$1 [R=301]
</IfModule>
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2