web-dev-qa-db-ja.com

これはApache 2.4.7でhtaccessを有効にする正しい方法ですか?

「htaccessを有効にする方法」のほとんどすべてのソリューションで、彼らは/ etc/Apache2/sites-available/defaultファイルを編集する必要があると言っています。しかし、Apache 2.4.7にはそのようなファイルはありません

新しいデフォルトのファイルは000-default.confであることをどこかで読みました。だから私はそれを編集して、行を追加しようとしました:

AllowOverride All

ただし、Apache2は正しく再起動せず、エラーが発生しました。 Apache2のドキュメントから、AllowOverrideは<Directory>セクションでのみ許可されていることがわかりました。次に、これを追加してみました:

<Directory "/var/www">
AllowOverride All
</Directory>

そして、これはうまくいくようです。しかし、/ var/wwwをそこに置くべきかどうかはわかりません。それは正しい方法ですか、それとも私のコンピューターはどういうわけか爆発しますか?

46
CluelessNoob

tl; dr

はい、それは正しい方法です。
しかし、もっとsemantic:はい、.htaccessが_ [のすべてのディレクティブをオーバーライドできるようにする正しい方法ですSOMECODE] _ディレクトリ。


わかったように、 AllowOverrideDirectoryセクションでのみ許可されます。

あなたの例を使用して:

/var/www

これは、<Directory "/var/www"> AllowOverride All </Directory> およびそのすべてのサブディレクトリですべての構成を(再帰的に)オーバーライドできることをApacheに伝えています。


より良い例として、仮想ホストに次の構成があると考えてください。

/var/www

そして、次のディレクトリ構造:

<Directory "/var/www">
    AllowOverride All
</Directory>

<Directory "/var/www/uploads">
    AllowOverride Limit
</Directory>

ここで行ったことは、var/ www/ .htaccess uploads/ .htaccess a/ .htaccess b/ .htaccess code/ .htaccess c/ .htaccess d/ .htaccess ディレクトリのすべてのサブディレクトリに.htaccessを作成することです。
通常はそうではありませんが、これは例のためだけです

ディレクトリー構造と構成を比較すると、/var/wwwフォルダーとそのサブディレクトリー内の.htaccessファイルと/var/wwwディレクトリーとそのサブディレクトリーを除くすべての/var/www/uploadsファイルがすべてをオーバーライドできることを意味します種類のディレクティブ。

ただし、/var/www/uploadsおよびそのサブディレクトリは、.htaccessファイルのみを使用して、AllowDeny、およびOrderディレクティブをオーバーライドできます。

注:Apache 2.4(13.10以降ではデフォルトで使用可能)以降、AllowDeny、およびOrderディレクティブは、Requireという名前の単一のディレクティブに置き換えられました。

57
Dan

まず、次のコマンドを使用して書き換えを有効にします。

Sudo a2enmod rewrite

次に、Apache2を再起動します。

Sudo service Apache2 restart

次に、sites-availableフォルダーに移動します。

/etc/Apache2/sites-available

defaultという名前のファイルを編集し、AllowOverride noneAllowOverride Allに変更します。この変更を行う必要があるのは2行です。

これにより、.htaccessがサーバーVPSで機能します。

これはUbuntu 12.04.5 VPSで機能しました。

38
q8fft

私の場合、次のように機能しました。
次の行を追加する必要がありました。

Order allow, deny
Allow from all

したがって、次のようになります。

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>
3
Prof. Chagas

ここで、デフォルト構成を変更せずにApache 2.4でhtaccessを有効にする方法のスニペット:

cat <<EOF> /etc/Apache2/conf-available/allow-override.conf
<Directory "/var/www">
    AllowOverride all
</Directory>
EOF

a2enconf allow-override
service Apache2 reload
2
panticz.de