【apache】URLアドレスに拡張子をつけずにアクセスできるようにするには【mod_rewrite】
webにアクセスするときにhttps://~/[].php や【.html】をつけずにアクセスできるようにするときのメモになります。
セキュリティ上の理由や、記載する必要がない点がメリットになります。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,L]
</IfModule
■説明
RewriteEngine ・・・
Rewrite機能自体のオン・オフを制御 今回こちらの機能を使用して書き換えを行うためONにします。
RewriteBase ・・・
処理のベースとなるURLの指定 今回はドメインTOPから指定
RewriteCond ・・・
サーバの変数を参照して指定した正規表現と一致していれば「RewriteRule」に従う
今回%{REQUEST_FILENAME} アクセスしてきたURL。下記でいうと「test」
例)http://localhost/[test]
【!-d】こちらがディレクトリではないかどうか(ファイルかどうか)
【!】が否定になり、【d】がディレクトリを表します。
RewriteRule ・・・
上記でアクセスしたのがディレクトリではない場合、こちらの処理を実施します。
^([^\.]+)$ $1.php [NC,L]
【^】文字の先頭を表します。
【[^\]】\を含めない文字の固まりを表します。
【+】 前の条件を受けて、「1文字以上の文字」を表します。
【$】 文字列の最後を表します。
【$1】は%{REQUEST_FILENAME}の値が入ります。それに【.php】をつける。今回でいうと「test.php」になります。
【NC】は大文字と小文字を区別しないという意味になります。
【L】はLastという意味で終了の合図になります。