KANTENNA.COM

Solarized

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>

RewriteRule

書式
  1.  RewriteRule パターン 置換対象

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

パターン

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

フラグ

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

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

[redirect|R=code]

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

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

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

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

以下の3つを指定できる

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

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 テスト文字列 条件パターン

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

条件パターン

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

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

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

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

Apacheハンドブック
作者:田辺 茂也 | 価格:¥ 4,830

トラックバック(1)

2009年6月27日 01:08

RewriteRule Tフラグ情報備忘録

RewriteRule Tフラグの使い方について探ってみた続きを読む

コメント

コメントする
Name
Email Address
URL
TIME LINE
2012
02.08

[Ubuntu11.10]Winows XPユーザーがUbuntuを使ってみて

Windows XPとUbuntuのデュアルブート環境にしてみておもったこと。

2012
02.03

[jQuery]closest()とparents()

今から16年前Netscapeブラウザのソースコードの公開方法の会議の中で、初めてオープンソースという言葉が使われた今日、 みなさんいかがお過ごしでしょうか。

今回の投稿はそれとは関係のないjQueryのparents()とclosest()が 似てたので何が違うのか試した時のメモです。

2012
02.01

[jQuery Mobile]初期化イベントメモ

jQuery Mobileは読み込まれてから

mobileinit -> pagebeforecreate -> pagecreate -> pageinit

の順番でイベントが発生する。

2012
02.01

[WordPress]管理画面のフッタのフィルタとアクション。

時間も時間なので、あまり使用頻度の高くない微妙なネタを。

会員制サイトなどで不特定多数の人にログインさせる場合、フッタのバージョン情報は隠しておきたかったり、 こじゃれたメッセージを表示したいときとか使うアクションとフィルタ。

2012
01.28

[WordPress] ブログの情報を取得する方法とノーキャッシュ疑惑

ブログのget_bloginfo()で取れないデータが必要な場合に使うもの。

2012
01.26

[jQuery Mobile]ダイアログ

jQuery Mobileにおけるダイアログの扱いはウインドウではなくページ。 なので通常のページと同様に扱える。ダイアログウインドウを出す。じゃなくダイアログページに遷移する。的な。

2012
01.25

[Ubuntu11.10]Ubuntuのインストール後の設定

インストール完了後の環境構築。PC起動時いちいちBIOSからブートドライブ選んで ブートするのかと思ってたら起動時にOS選択画面が出てくる。

すばらしいですね。

2012
01.24
2012
01.23

MinGW+Mintty+Git

MinGW+Mintty+Gitをやろうとして失敗に終わった。このエントリーには収穫できるものはありません。