読者です 読者をやめる 読者になる 読者になる

なんちゃってウェブ系エンジニアの備忘録

某IT企業で働くなんちゃってウェブ系エンジニアが技術やデザインなど役に立ちそうなものなどを備忘録として載せていきます

htaccessファイルを使って、index.htmlなしに統一する

例えば、

があったとすると、htaccessファイルを使って、index.htmlなしに統一するには

ステージング環境(開発用環境)用の.htaccess

RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://www.test.sample/$1 

本番環境用の.htaccess

RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://www.honban.sample/$1 

.htaccessでの設定が、本番環境と開発環境とテスト環境で違うことがあるため、
環境に合わせて、2つのファイルを作成する必要がある。

本番と開発でファイルの内容が違うと、ソース管理が面倒。
本番環境を設定するつもりで間違って、ステージング環境(開発用環境)のURLを
入れてしまったら、やっかいになる。
同じ記述で済ませることはできないか。

そこで、接続要求しているホスト名を取得する環境変数「HTTP_HOST」を利用することで
上記の問題を解決することが出来る。

#indexなしに統一
RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://%{HTTP_HOST}/$1 [R=301,L]

環境変数をうまく利用しておけば、どの環境でも使えますね。