mod_rewrite

サンプルコードは以下を省略

RewriteEngine on

phpの拡張子を隠す

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]

L2 ディレクトリでなくて
L3 foobar.phpが存在していたら

ファイルもディレクトリも存在してなかったらindex.phpを通す

フレームワークであるパターン

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]

htmlファイルがあったらそれを表示

https://sample.com/test
で test.html が存在する

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html [L]

confの文法チェック

$ apachectl configtest

サブディレクトリへのアクセスログを分ける

SetEnvIf Request_URI "/sample/" sample
CustomLog "logs/access_log" combined env=!sample
CustomLog "logs/sample-access_log" combined env=print