ApacheでURLを読み替える方法

PHPを使う場合、パラメータがあるURLは一般に次のようになります。

index.php?word=food
Apacheを使ったサーバで、一部を省略して次のようにしても同じページが開くようにします。
http://stabucky.com/test/word/food

.htaccessを使います。
.htaccessはファイル名が「.htaccess」であるテキストファイルです。

.htaccessに次のように書きます。

RewriteEngine on
RewriteRule ^word\/(.+)$ index.php?word=$1 [L]

「RewriteEngine on」で書き換えができるようになります。
「RewriteRule A B」で「A」を「B」に書き換えます。正規表現が使えます。
「[L]」は最後を示します。

.htaccessを「http://stabucky.com/test/」のディレクトリに置きます。
このとき「http://stabucky.com/test/{対象文字列}」の対象文字列の部分が書き換えの対象になります。
上の例では「word/food」が書き換えの対象になります。
RewriteRuleの「^word\/(.+)$」に一致するので書き換えられます。括弧内は「food」です。これは「$1」で取得できるので「index.php?word=food」になります。

これでURLとして
http://stabucky.com/test/word/food
を与えると
http://stabucky.com/test/index.php?word=food
として処理されます。
したがってPHPのコードでは「$_GET[“word”]」としてパラメータ「food」を取得することができます。

コメント

タイトルとURLをコピーしました