HOME>情報備忘録>mod_rewriteメモ

mod_rewriteメモ

mod_rewriteのマニュアル読みながらメモ。

Redirect と RedirectMatch

RedirectとRedirectMatchはApacheのmod_aliasの機能で mod_rewriteとは関係ないようだ。どうりで構文が違うわけだwなんかすっきりした。

mod_rewrite

主に正規表現を利用してURLを置換する。

RewriteEngine On

mod_rewriteを有効にする。 ただしapache(httpd.conf)でmod_rewriteが読み込まれて無いと 利用できないので下記のようにするとよさげ。

.htaccess

  1. <IfModule mod_rewrite.c>
  2.     RewriteEngine on
  3.  </IfModule>
  4.  

RewriteRule

書式

  1. RewriteRule パターン 置換対象
  2.  

パターンにマッチした場合、置換する。

パターン

POSIX互換の正規表現が利用できる。

フラグ

.htaccess

  1. RewriteRule ^/$  /test.html [L]
  2.  

最後にある[]のことをフラグという。 設定可能なフラグは以下となる。

[redirect|R=code]

最もよく使うフラグのひとつ。外部にリダイレクトする場合このフラグをつけます。 [R=code]とすることでレスポンスコードを指定できます。 指定しない場合302が返されます。

レスポンスコードによる指定

300~400の間で任意に指定できる。

.htaccess

  1. [R=301]
  2.  
シンボルによる指定

以下の3つを指定できる

.htaccess

  1. [R=temp] // デフォルト [R] と等価
  2. [R=permanent] // [R=301] と等価
  3. [R=seeother] // [R=303] と等価
  4.  

303の意味がよくわからない・・・

[forbidden|F]

URLを強制的にアクセス禁止にする。レスポンスコード403が返される。 RewriteCond といっしょに使うと良いらしい。

[gone|G]

URLを強制的に消去済み(gone)にする。 レスポンスコード410が返される。

移転も代替コンテンツもない場合に使うっぽい。

[proxy|P]

Apacheにプロキシモジュールが組み込まれていることが条件。

ちょっと気になるフラグ。 どうも外部のコンテンツを返すことができるっぽい。 そのうち調べてみたいです。

[last|L]

これもよく見かけますね。 ここで書き換え処理を中止し、それ以上の書き換えルールを適用しないようにする。

[next|N]

よくわかりません。

[chain|C]

よくわかりません。

[type|T=MIME-type]

MIME type の強制指定。ターゲットファイルの MIME タイプを強制的にMIME-typeにします。

これは意外と使えそうな気がする。(こんな感じで使えそう)

[nosubreq|NS]

よくわかりません。

[nocase|NC]

パターンについて大文字小文字を区別しないようにする。

[qsappend|QSA]

クエリ付きのURLを書き換える時に重宝するっぽい。

このフラグは、置換文字列の中でマッチしたものを書き換えるのではなく、 そこにクエリー文字列部分を追加するように、書き換えエンジンに強制 します。書き換えルールを通してクエリー文字列に何かデータを追加したい 場合にこのフラグを使います。

[noescape|NE]

mod_rewrite が書き換え結果に対して通常行なわれる URL エスケープルールを適用しないようにする。 エスケープされたURLを利用したい時に利用する。

[passthrough|PT]

よくわかりません。

[skip|S=num]

次のnum番目の処理をスキップする。 条件分岐(if-then-else)を作り出すことができるらしい。

複雑なことする場合に使うと便利なのかも。

[env|E=VAR:VAL]

環境変数を強制的に変更したい場合? 面白そうではあるがちょっとよくわからない。

参照サイト

RewriteCond

書式

  1. RewriteCond テスト文字列 条件パターン
  2.  

RewriteRuleの前に記述することで以降のRewriteRuleは 自身のパターンとRewriteCondのパターンを満たした場合のみ置換される。

条件パターン

正規表現を利用。ちょっと拡張されている。 例えばwordpressの.htaccessにある下記。

.htaccess

  1. RewriteCond %{REQUEST_FILENAME} !-d
  2. RewriteCond %{REQUEST_FILENAME} !-f
  3. RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
  4.  

%{REQUEST_FILENAME}がディレクトリまたはファイルでない場合に置換される。

なので逆に言うとwordpressが使っているURLとおなじディレクトリやファイルを 実体としておくとそっちが表示されるようになる(はず)。

viewBook('4873111501'); ?>
投稿日 2009年6月26日 18:57
カテゴリ 設定
タグ .htaccess | WordPress
トラックバック URL http://www.kantenna.com/cgi-bin/mt504/mt-tb.cgi/1014

コメント

コメントする
Name
Email Address
URL