さくらインターネットでmod_rewriteを使う

軽くハマったので、備忘録として残しておきます。

.htaccess を使えば良いのは知っていたのだけど、いざ設定してみると 500エラーが出たり、設定したrewite先がねーよって言われたり、設定がなかったことにされたりしました。独自ドメインを使ってるとか、フォルダ構成がよろしくないとかでも無駄にハマった気がする。

■やりたかったこと

http://ukikusa.info/s/XXXXX

にきたときに、

http://ukikusa.info/s/redirect.php?id=XXXXX

を呼び出したい。

ちなみに、フォルダ構成は↓のような感じになってます。

http://ukikusa.info/ ⇒ /home/USERNAME/www/ukikusa

http://ukikusa.info/s/redirect.php ⇒ /home/USERNAME/www/ukikusa/s/redirect.php

■やり方

まずは、.htaccess を用意します。

.htaccess

RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([0-9a-zA-Z]+)+ s/redirect.php?id=$1

そして、.htaccess を /home/USERNAME/www/ukikusa/s/ に配置するだけ。

出来てみると、とっても簡単ですね。

■ポイント

当たり前のことではあるのですが、、

  1. RewriteBase は必ず書く
  2. RewriteRule の rewrite 元は .htaccess が置かれたフォルダからの相対パスで書く
  3. RewriteRule の rewrite 先は RewriteBase からの相対パスで書く
  4. 独自ドメインを使っていると、RewriteBase の / はドメインで指定しているパスになる

上記を押さえておけば、大丈夫なはず。。