存在しないファイルへのリクエストを一つにまとめる

もう少しメモ的に何でも残して行くのがこのブログの本懐だったのを思い出して、
いつぞやのしょこたんばりのブログ更新をやってます。

ってことで職業柄、.htaccessでmod_rewriteを使うんですが、
使う度に書き方を思い出す所からやってるので効率が悪いのでメモって行く事にします。

# 存在しないファイルやディレクトリへのリクエストを/404view.phpにリクエストしたURIをつけて渡す
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /404view.php?plaindata=$1 [L,QSA]

解説するっていう偉そうなもんでは有りませんが、自分自身理解する為に噛み砕いて説明して行きます。

RewriteEngine on

これは宣言。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

これはリクエストしたURIはファイルやディレクトリとして存在”しない”ならば、という条件。
二つ書いてるから and の条件になります。

RewriteRule ^(.*)$ /404view.php?plaindata=$1 [L,QSA]

条件に一致した場合、リクエストURIを後方参照($1で呼び出せるよう)にして、
処理をするプログラムにgetで投げて、これ以上の処理はしないようにして、([L])
リクエストしたときのクエリー文字列($_GETの事)をそのまま保持、追加するよ([QSA])ってフラグです。
これで言う404view.phpの内部で最初にリクエストした時に投げたクエリー文字列が不要ならQSAも不要。

0
カテゴリー未分類

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です