.htaccessで2.2系と2.4系の記述を共存させる方法

  • 投稿 : 2018-03-11
<IfVersion < 2.3>
#2.2系の記述
</IfVersion>
<IfVersion >= 2.4>
#2.4系の記述
</IfVersion>

IfVersionを使うと条件分岐できるのでそれを利用します。バリューサーバー・ミニバードでは動作したので、多くのレンタルサーバーで動作するのではないかと思います。現在2.2系だけど、将来2.4にバージョンがあがる可能性がある場合に便利なのではないかと思います。

参考:
mod_version - Apache HTTP サーバ バージョン 2.2
mod_version - Apache HTTP サーバ バージョン 2.4

2.2系、2.4系のアクセス制限の違い

IPアクセス制限を使ってる場合は、かき分ける必要があります。

特定のIPだけ許可

#2.2系
<IfVersion < 2.3>
Order deny,allow
Deny from all
allow from 192.168.100.1
allow from 192.168.200.0/17
</IfVersion>
#2.4系
<IfVersion >= 2.4> 
Require all denied
Require ip 192.168.100.1
Require ip 192.168.200.0/17
</IfVersion>

特定のIPだけ拒否

#2.2系
<IfVersion < 2.3>
Order allow,deny
Allow from all
deny from 192.168.100.1
deny from 192.168.200.0/17
</IfVersion>
#2.4系
<IfVersion >= 2.4> 
Require all granted
Require not ip 192.168.100.1
Require not ip 192.168.200.0/17
</IfVersion>

参考:人間とウェブの未来 - Apache 2.4系でのモダンなアクセス制御の書き方

client denied by server configurationというエラー

いや、もう何年も前から、2.3(開発版)以降の版ではこうなるよって話はあったのだが、未だにうちで面倒みているお客さんのサーバは 2.0、2.2 系が多くて、すっかり忘れていた。

しかも、「AH01630: client denied by server configuration」ってエラーメッセージでググって引っかかる日本語サイトが、ことごとく、「AllowOverride All とか、Order Allow,Deny とかの記述が抜けてるんじゃね?」と、未だ 2.4 系に対応していない記述ばかりだったので、俺のシナプスは全然つながらなかったぜ!
おほ。2.4系じゃ .htaccess ファイルの許可の仕方も変わってるんだなあ - 電気ウナギ的○○

スポンサーリンク