.htaccess の書き方 ~ hogehoge.com/fuga をリライトする
hogehoge.com/index.php?param=fuga にリライトする
結論から言うと こうなります。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)\.(.*)$ - [L]
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !-d
RewriteRule ^(.+)$ index.php?url=$1 [L]
</IfModule>
1行目 … <IfModule mod_rewrite.c> ~ </IfModule>
<IfModule mod_rewrite.c>
…
</IfModule>
「このサーバー環境で、mod_rewrite を利用できる場合には…」という条件式ですが、リライトをする際のおまじないのような定型句です。
2行目 … RewriteEngine On
RewriteEngine On
Apacheのモジュールである mod_rewrite を利用します!という宣言文です。必ず先頭に書きます。
3行目 … RewriteRule ^(.).(.)$ – [L]
RewriteRule ^(.*)\.(.*)$ - [L]
「要求されたリクエストが “*.*” であれば “-” 処理をせず “[L]” 終了する」という意味です。
4行目 … RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !-f
「要求された URL のファイルがなければ」という意味です。
5行目 … RewriteCond %{REQUEST_URI} !-d
RewriteCond %{REQUEST_URI} !-d
「要求された URL のディレクトリもなければ」という意味です。
6行目 … RewriteRule ^(.+)$ /index.php?param=$1 [L]
RewriteRule ^(.+)$ /index.php?param=$1 [L]
前半の「.+」は、「.」(任意の文字)が「+」(1文字以上繰り返される)…という意味です。
仮に「/fuga」であった場合には「/index.php?param=fuga」が呼び出されます。
3. [L] の意味は?
[L] スイッチは “Last” の意味です。つまり、この条件に合致し変換した場合には、以下の行には進まない…という意味になります。ただし!
ここで終了ではありません。[L] スイッチが指定されると、ここで一旦終了になりますが、再度 先頭に戻って変換を確認する…という作業が実行されますので、注意が必要です。
#htaccess #正規表現
SNS開発18年で2つのSNSを開発・運用中の当社が、あなたのアイデアを形にするお手伝いをします。