「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をそこに置くべきかどうかはわかりません。それは正しい方法ですか、それとも私のコンピューターはどういうわけか爆発しますか?
はい、それは正しい方法です。
しかし、もっとsemantic:はい、.htaccess
が_ [のすべてのディレクティブをオーバーライドできるようにする正しい方法ですSOMECODE] _ディレクトリ。
わかったように、 AllowOverride
はDirectory
セクションでのみ許可されます。
あなたの例を使用して:
/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
ファイルのみを使用して、Allow
、Deny
、およびOrder
ディレクティブをオーバーライドできます。
注:Apache 2.4(13.10以降ではデフォルトで使用可能)以降、Allow
、Deny
、およびOrder
ディレクティブは、Require
という名前の単一のディレクティブに置き換えられました。
まず、次のコマンドを使用して書き換えを有効にします。
Sudo a2enmod rewrite
次に、Apache2を再起動します。
Sudo service Apache2 restart
次に、sites-available
フォルダーに移動します。
/etc/Apache2/sites-available
default
という名前のファイルを編集し、AllowOverride none
をAllowOverride All
に変更します。この変更を行う必要があるのは2行です。
これにより、.htaccess
がサーバーVPSで機能します。
これはUbuntu 12.04.5 VPSで機能しました。
私の場合、次のように機能しました。
次の行を追加する必要がありました。
Order allow, deny
Allow from all
したがって、次のようになります。
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>
ここで、デフォルト構成を変更せずに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