零細システムエンジニアの備忘録

RPA、サーバ、ネットワークに関する設定メモ、導入相談もコメント欄やメールに頂ければお答えしますのでお気軽にご相談下さい(^^)

【apache】URLアドレスに拡張子をつけずにアクセスできるようにするには【mod_rewrite】

webにアクセスするときにhttps://~/[].php や【.html】をつけずにアクセスできるようにするときのメモになります。

セキュリティ上の理由や、記載する必要がない点がメリットになります。

IfModule mod_rewrite.c>
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という意味で終了の合図になります。