mod_rewriteのマニュアル読みながらメモ。
RedirectとRedirectMatchはApacheのmod_aliasの機能で mod_rewriteとは関係ないようだ。どうりで構文が違うわけだwなんかすっきりした。
主に正規表現を利用してURLを置換する。
mod_rewriteを有効にする。 ただしapache(httpd.conf)でmod_rewriteが読み込まれて無いと 利用できないので下記のようにするとよさげ。
<IfModule mod_rewrite.c>
RewriteEngine on
</IfModule>
RewriteRule パターン 置換対象
パターンにマッチした場合、置換する。
POSIX互換の正規表現が利用できる。
RewriteRule ^/$ /test.html [L]
最後にある[]のことをフラグという。 設定可能なフラグは以下となる。
最もよく使うフラグのひとつ。外部にリダイレクトする場合このフラグをつけます。 [R=code]とすることでレスポンスコードを指定できます。 指定しない場合302が返されます。
300~400の間で任意に指定できる。
[R=301]
以下の3つを指定できる
[R=temp] // デフォルト [R] と等価 [R=permanent] // [R=301] と等価 [R=seeother] // [R=303] と等価
303の意味がよくわからない・・・
URLを強制的にアクセス禁止にする。レスポンスコード403が返される。 RewriteCond といっしょに使うと良いらしい。
URLを強制的に消去済み(gone)にする。 レスポンスコード410が返される。
移転も代替コンテンツもない場合に使うっぽい。
Apacheにプロキシモジュールが組み込まれていることが条件。
ちょっと気になるフラグ。 どうも外部のコンテンツを返すことができるっぽい。 そのうち調べてみたいです。
これもよく見かけますね。 ここで書き換え処理を中止し、それ以上の書き換えルールを適用しないようにする。
よくわかりません。
よくわかりません。
MIME type の強制指定。ターゲットファイルの MIME タイプを強制的にMIME-typeにします。
これは意外と使えそうな気がする。(こんな感じで使えそう)
よくわかりません。
パターンについて大文字小文字を区別しないようにする。
クエリ付きのURLを書き換える時に重宝するっぽい。
このフラグは、置換文字列の中でマッチしたものを書き換えるのではなく、 そこにクエリー文字列部分を追加するように、書き換えエンジンに強制 します。書き換えルールを通してクエリー文字列に何かデータを追加したい 場合にこのフラグを使います。
mod_rewrite が書き換え結果に対して通常行なわれる URL エスケープルールを適用しないようにする。 エスケープされたURLを利用したい時に利用する。
よくわかりません。
次のnum番目の処理をスキップする。 条件分岐(if-then-else)を作り出すことができるらしい。
複雑なことする場合に使うと便利なのかも。
環境変数を強制的に変更したい場合? 面白そうではあるがちょっとよくわからない。
RewriteCond テスト文字列 条件パターン
RewriteRuleの前に記述することで以降のRewriteRuleは 自身のパターンとRewriteCondのパターンを満たした場合のみ置換される。
正規表現を利用。ちょっと拡張されている。 例えばwordpressの.htaccessにある下記。
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
%{REQUEST_FILENAME}がディレクトリまたはファイルでない場合に置換される。
なので逆に言うとwordpressが使っているURLとおなじディレクトリやファイルを 実体としておくとそっちが表示されるようになる(はず)。
/ 金額 : ¥ 4,830
1-5
6-10