.htaccessリダイレクト ディレクトリを1つ持たせたい時 例


調べても、意外とピンポイントでやり方が載っている記事がなかったのでメモ。

やりたい事

/index.html → /hoge/index.html
/aaa/index.html → /hoge/aaa/index.html
↑こんな感じで全てのファイルに1つディレクトリを挟むようにする転送。

こちらの記事を参考に作ってみた結果、
hoge/aaa/等も全てhoge/に転送されてしまいダメでした。。。

RewriteEngine On
RewriteCond %{REQUEST_URI} !/hoge
RewriteRule ^(.*)$ /hoge/ [R,L]

解決策

$1を転送するディレクトリの後ろに付ける。
$1で(.*)部分を渡す。除外したファイル以外の全てのファイルをhoge/の配下にリダイレクトしてくれます。

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !/hoge
RewriteRule ^(.*)$ /hoge/$1 [R=301,L]