Apache2 で rewrite エンジンを動か無いときにチェックするもの
久しぶりに、ubuntu にApache2+php いれて /aaa/aaa を /index.php/aaa/aaa に転送しようとしたら出来ない。
apache2 の場合、rewrite を使うまでにいくつか手順が必要
- rewrite が有効になっていますか
- Allow Override が使えるか
- htaccess の記述内容は正しいですか
rewrite を有効にして、有効になっているか。
apache の場合、rewrite を使ってリクエストのPATHをキャッチオールするので、有効にする
sudo a2enmod rewrite sudo apache2 configtest sudo apache2 restart
Allow Override
apache2.conf で Allow Orverride を有効にする
Allow Orverride はディレクトリに対する設定で書くので、apache2.conf に書く。
<Directory /var/www/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
.htaccess の記述
.htaccess の記述を確認する。rewrite を有効にしているかチェック
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !^(.*)\.(gif|png|jpe?g|css|ico|js|svg|map)$ [NC] RewriteRule ^(.*)$ index.php [QSA,L] </IfModule>
rewrite を使う時
rewrite は標準でインストールされるが、htaccess で使うのに Allow Override がhttpd.confに必要で、一回書くとずっと使うので忘れますね。
nginx だと rewrite のルールは nginx のconfig に書くので、更に忘れますね。