検索結果一覧
- タグ「mod_rewrite」の検索結果は2件です。
mod_rewrite
この雑記帳は http://www.favorite-labo.org/ からアクセスできますが、プログラム自体は http://www.favorite-labo.org/blog/index.php にあり、実は公開ディレクトリ直下にプログラムはありません。
また、http://www.favorite-labo.org/diary.cgi にアクセスすると以前の雑記が表示されますが、プログラム自体は http://www.favorite-labo.org/archives/archives.cgi にあり、diary.cgi というファイルは存在していません。
これらは mod_rewrite を利用することにより、URLを書き換えています。具体的には、公開ディレクトリ直下の.htaccessに、以下の内容を記述しています。
RewriteEngine On
RewriteRule ^$ blog/ [L]
RewriteRule ^diary.cgi(.*)$ archives/archives.cgi$1 [L]各行の意味は以下のとおり。
- 1行目
- mod_rewrite を有効にしています。
- 2行目
- 「何の文字列も与えられずに公開ディレクトリ直下にアクセスすれば、
blog/を表示する。」としています。 - 3行目
- 「
diary.cgiから始まる文字列が与えられて公開ディレクトリ直下にアクセスすれば、archives/archives.cgiを表示する。その際、diary.cgiに引数が渡されていれば、その内容をarchives/archives.cgiに渡す。」としています。
また、[L] は「条件にマッチすれば、以下に続く処理を行わない」という意味。
正規表現が少し解れば、ページにアクセスするためのURLを自由に操作できそうです。便利。
…と言いつつ、まだ最低限の知識しか仕入れていないので要勉強です。
しぃペインター + mod_rewrite
このブログにしぃペインターを導入しようとしたのですが、何故かイラスト描画画面が表示されませんでした…。
色々調べたところ、どうやらmod_rewriteの設定が原因になっているみたい。
PHP Blog 付属の.htaccessに
RewriteRule (.*) index.php/$1という行がありますが、この処理が実行されるとイラスト描画画面が表示できないみたい。
なぜこの行がダメなのかは不明…もしかしたらサーバー依存の問題なのかもしれないし、全然違う箇所の影響を受けているのかもしれないし…。
半日ほど悩んだ挙句、以下のように変更すると描画画面が表示されました。
RewriteRule ^([^\.]*)$ index.php/$1「URLに . が含まれていれば処理しない」というように変更しています。index.php が直接呼ばれた場合はURLの書き換えは不要なので、何も処理を行わないように…という意味。
ただ、根本的な解決ではないので、また詳しく調べてみます。そのうちmod_rewriteの文法を基礎から勉強しよう…。