web-dev-qa-db-ja.com

Apacheを2.2から2.4に更新し、現在サブドメインが壊れています

サブドメインにアクセスしようとすると、error.logファイルにエラーが記録されます。

[Tue Jul 15 11:17:42.924790 2014] [core:alert] [pid 17309] [client 108.162.241.152:26427] /var/www/.htaccess: <IfModule not allowed here
[Tue Jul 15 11:17:43.672653 2014] [core:alert] [pid 13948] [client 108.162.242.152:38399] /var/www/.htaccess: <IfModule not allowed here

ブラウザを介してサブドメインにアクセスすると、単に内部サーバーエラーが発生したことが示されます。

これは、サブドメインの1つのconfファイルです。

$ less sites-enabled/paste.jhvisser.com.conf
<VirtualHost *:80>
DocumentRoot "/var/www/paste"
ServerName paste.jhvisser.com
<Directory "/var/www/paste">
allow from all
Options +Indexes
</Directory>
</VirtualHost>

サーバー名を指すDNSレコードがあります。これらは、Ubuntu 12.04 LTSからUbuntu 14.04 LTSにアップグレードすると動作しなくなり、Apache 2.2からApache 2.4にアップグレードされました。

ここで何が問題なのか混乱していますか?

4
ComputerLocus

Apache 2.2から2.4への最大の変更点の1つは、ディレクトリのアクセス許可が付与される方法です。 allow fromおよびdeny from構文は廃止され、新しいrequire構文が採用されました。 Apacheの2.2から2.4へのアップグレード を参照してください。

mod_access_compat というモジュールがあります。これにより、古い構文を引き続き使用できます。残念ながら、/ etc/Apache2の下の設定ファイルでは機能しませんでした。それらを調べて、新しいRequire構文で更新する必要がありました。

交換する場合

allow from all

Require all granted

あなたのサブドメインはおそらくもっと良く機能するでしょう。 AllowDeny、またはOrderのインスタンスを探します。それらはすべて、Requireの新しい構文に置き換える必要があります。 アップグレードドキュメント には、他のユースケースの例がもっとあります。

個人的には、新しいRequire構文がはるかに優れていることがわかりました。私にはわかりやすいようで、パスワードやIPアドレスに基づいた複雑なケースを処理する方が簡単です。変更のマイナス面は、古い構文では構成ファイルを更新する必要があることです。

プラス面として、アクセスcompatモジュールは。htaccessファイルにあったすべての古いスタイルのディレクティブを処理したため、/ etc/Apache2は私のために更新する必要がありました。

5