タグ: mod_rewrite

mod_rewrite を適用するために httpd.conf を修正

新しいサーバに mod_rewrite を使ったシステムをそのままコピーしても使えない。
これは当たり前。
「.htaccess」をコピーしても使えない。
なんで?

httpd.conf も修正する必要があるから。
修正する箇所は次の2ヶ所。
両方共「AllowOverride」の設定。

1つ目。305行目付近にある。

<Directory />
    Options FollowSymLinks
    # AllowOverride None
    AllowOverride All
</Directory>

「None」を「All」に修正する。

2つ目も同じような修正。339行目付近にある。

<Directory /var/www/html>
    Options Indexes FollowSymLinks
    # AllowOverride None
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

この2箇所を修正すると .htaccess の mod_rewrite が動くようになる。

.htaccess に mod_rewrite を書き足す

もう「?」の後ろにGETくっつけて次のページに指示を送るの飽きた!
wordpressみたいにスラッシュで区切って送りたい!

と思ったので、mod_rewrite をいじってみたかった。
けどサーバは既に運用中。httpd.conf を適当に書き換えるのはいただけない。
ので、.htaccess を書いてそのディレクトリのみに今回の仕様を適用することにします。

マニュアルは http://httpd.apache.org/docs/current/mod/mod_rewrite.html
日本語はちょっと古いけど http://japache.infoscience.co.jp/japanese_1_3_6/manual/mod/mod_rewrite.html このへんかな?

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#RewriteRule \.(jpg|gif|ico|css|js)$ - [L]
RewriteRule ^(.*)$ index.php?com=$1 [QSA,L]

こんな?
あとは com 以下の文章が普通に投げられるので、この部分を色々切り取ったりしてコマンドにする、と。