【Apache】Rewriteで別のフォルダの同じファイル名へリダイレクトさせる方法

Apache

ApacheのRewriteで別のフォルダの同じファイル名へリダイレクトさせる方法を紹介します。

まずは、後方参照です。

Rewriteで別のフォルダの同じファイル名へリダイレクトさせる

()グループ化を使ってパスを切り取る

()グループ化を使ってパスを切り取ります。

RewriteEngine On
RewriteBase /some-folder/
RewriteRule some-folder/subfolder1/(.+\.html) subfolder2/$1

意味としては、htmlで終わるすべてのファイルという意味になります。
.は任意の一文字を指定します。+は1回以上の繰り返しです。
\.に関してはエスケープさせて、.を文字列として取り扱っています。
正規表現については、正規表現の基礎を参考にしてみてください。

そして、正規表現の部分を()でグループ化します。
そうすることで、$1 ~ $9で渡ってくることになります。
それをsubstitutionの場所で使用できます。
つまり、subfolder1/のあとの()の部分が、subfolder2の$1の部分に渡ってきます。

Apache

Posted by devsakaso