URLリライトの復習その2
関連記事:
UbuntuサーバのApache2でURLリライトを試してみる
URLリライトの復習とIE11のUser-Agent
.htaccessの有効化とサブディレクトリのアクセス制御
CentOSでのURLリライト
以前、URLリライトについての記事を書いた時は動作確認に Ubuntu Server を使っていたが今はCentOS(6.6)を使っているので、URLリライトが使えるか調べてみた。
/etc/httpd/conf/httpd.conf を見ると
LoadModule rewrite_module modules/mod_rewrite.so
という記述があるのでデフォルトでURLリライトが有効になっている。あとは .htaccess を使えるようにすれば .htaccess でURLリライトが可能になる。
サブディレクトリの.htaccessのRewritBaseとRewriteRule
RewriteRuleは書式は以下である。
RewriteRule <Pattern> <Substitution>
いろいろ試してわかったことを以下に箇条書き。
- パターンと照合される入力値は相対パスである。スラッシュではなく名前から始まる。よって、パターンとして "/○○" では入力値と一致しない。相対パスが一致するようなパターンを考えなければならない。
- Substitutionは "/" で始まればドキュメントルートからのパス。名前から始まれば相対パスである。
- パターンに一致して書き換えられた場合、RewriteBaseがあれば書き換えられたURL(のパス名)は "RewriteBaseの値+<Substitution>" が結果となる。
具体例として、以下のようなディレクトリ、ファイル構成を考える。
/(ドキュメントルート) ├abc.html ├sub │├.htaccess │├abc.html ・・ ・・ ・・
/sub/.htaccess(RewriteBaseとRewriteRurleのみ抜き出したもの)とその場合にURLリライトの結果の表を以下に示す。
例1
RewriteBase /sub/ Rewrite ^test\.html$ abc.html
| 元のURLのパス名 | URLリライトへの 入力 |
URLリライトの 出力 |
書き換えられた URLのパス名 |
|---|---|---|---|
| /sub/test.html | test.html | abc.html | /sub/abc.html |
| /sub/sub2/test.html | sub2/test.html | パターンに 一致しない |
- |
例2
RewriteBase /sub/ Rewrite ^.*test\.html$ abc.html
| 元のURLのパス名 | URLリライトへの 入力 |
URLリライトの 出力 |
書き換えられた URLのパス名 |
|---|---|---|---|
| /sub/test.html | test.html | abc.html | /sub/abc.html |
| /sub/sub2/test.html | sub2/test.html | abc.html | /sub/abc.html |
例3
Rewrite ^test\.html$ /abc.html
| 元のURLのパス名 | URLリライトへの 入力 |
URLリライトの 出力 |
書き換えられた URLのパス名 |
|---|---|---|---|
| /sub/test.html | test.html | /abc.html | /abc.html |
« composerのインストール | Main | Excelで就業時間を計算する式を考えた »
「プログラミング、技術情報」カテゴリの記事
- PHPStorm 2018.1.7 に更新(2018.12.09)
- 技術メモをQiitaに移行(2016.01.24)
- 正規表現メモ:ものぐさ(最小)マッチング(2015.11.29)
- BASE64にエンコード/デコードするバッチファイル(2015.11.23)
- Windows7の検索ボックスの検索条件指定(フォルダの除外など)(2015.08.16)
「Linux」カテゴリの記事
- CakePHPのインストール(2015.06.14)
- PHPからPDOでPostgreSQLに接続する(2015.06.09)
- Laravel4のインストール(2015.05.06)
- URLリライトの復習その2(2015.04.07)
- composerのインストール(2015.04.01)
The comments to this entry are closed.


Comments