0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

.htaccessを下位フォルダに置いたらリダイレクトが利かなくなった

Posted at

知ってれば当たり前、初歩的な内容なのですが。
誤った場所に .htaccessのリダイレクト処理を置いて、他のリダイレクト処理が利かなくなってしまいました。
つまり、今まで表示されていたページが表示されなくなるという障害を起こしてしまいました。

原因

.htaccessの影響範囲を誤って理解したため

・親ディレクトリの設定は、子ディレクトリにも有効
・一つ.htaccessを設置すると、その下にぶら下がる全ディレクトリに影響が及ぶ
ネットで検索するとでてくる.htaccessの影響範囲の説明

このことから
①上位ディレクトリでリダイレクト処理を書く
②下位ディレクトリでも別の内容のリダイレクト処理を書く
①②両方OKになるのと勘違いしていまいした。

今回の障害事例

①redirect/test/A/Cへのアクセスはすべて https://yahoo.co.jp 
にリダイレクトされます。
www直下の.htaccessには以下の記述がありました。

WWW直下の.htaccess

RewriteEngine on
RewriteRule redirect/test/A/C https://yahoo.co.jp [L,R=301]

②新たに
redirect/test/Bへのアクセスはすべて https://google.co.jp へリダイレクトする処理を追加します。
www直下の.htaccessを触って真っ白になるのが嫌だったので
www/rediret/test直下の.htaccessを新たに作成し以下の記述をしました。
ネットで検索するとでてくる
「親ディレクトリの設定は、子ディレクトリにも有効」
などの言葉を誤って解釈していたのでここで悲劇が起こりました。

www/rediret/test直下の.htaccess
RewriteEngine on
RewriteRule B https://google.co.jp [L,R=301]

③redirect/test/A/Cから https://yahoo.co.jp
へのリダイレクトが利かなくなった

解決①

リダイレクト処理はwww直下の.htaccessに追記

www直下の.htaccess
RewriteEngine on
RewriteRule redirect/test/A/C https://yahoo.co.jp [L,R=301]
RewriteRule redirect/test/A/B https://google.co.jp [L,R=301

解決②

www/rediret/test直下の.htaccessに親ディレクトリのリダイレクト処理をだぶって書く

RewriteEngine on
RewriteRule B https://google.co.jp [L,R=301]
RewriteRule A/C https://yahoo.co.jp [L,R=301]

.htaccessのリダイレクト処理(RewriteRule)は追記ではなく上書き

今回だと、
www/rediret/test直下に.htaccessを置いて、リダイレクト処理(RewriteRule)の記述をしたので
www/rediret/test以下のリダイレクト処理は上書きされたのです。
つまり、www直下の.htaccessに記述したwww/rediret/testフォルダへのリダイレクト処理は上書きで消えてしまったのです。

これを解決するには
①www/rediret/test/.htaccessに上位ディレクトリのRewriteRuleをもう一度書く
②上位ディレクトリの.htaccessにRewriteRuleに追記する
のどちらかになります。
参考↓
適用のされ方Apache公式サイト説明

※実は以前にも同じような依頼があって
www直下の.htaccessを触りたくなかったので下位ディレクトリに.htaccessを作成しリダイレクト処理を書いてました。
たまたまwww直下の.htaccessに該当フォルダへのRewriteRuleがなかったのでうまくいってただけのようです。
次からは要注意です。
というかサイト作成に何一つかかわっていないのに、.htaccessの作成だけ丸投げされるのは怖いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?