htaccess

.htaccess の書き方 ~ hogehoge.com/fuga をリライトする

.htaccess の書き方 ~ hogehoge.com/fuga をリライトする

.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 #正規表現

プログラミング相談受付中

自営エンジニア歴 20年以上の 当ブログ作者が、プログラミングに関するオンライン相談(zoom 等)を受付中です。言語は HTML CSS JavaScript jQuery PHP MySQL VBScript など…

詳細・お問い合わせはこちら