
「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 をそこに配置すべきかどうかはわかりません。これは正しい方法でしょうか、それとも私のコンピューターが何らかの形でクラッシュしてしまうのでしょうか?
答え1
要約
はい、それは正しい方法です。
しかし、もっとセマンティック.htaccess
: はい、ディレクトリ内のすべてのディレクティブを上書きできるようにする正しい方法です/var/www
。
ご存知のとおり、AllowOverride
セクションの下でのみ許可されますDirectory
。
あなたの例を使用すると:
<Directory "/var/www">
AllowOverride All
</Directory>
/var/www
これは、およびそのすべてのサブディレクトリ内のすべての設定を (再帰的に) 上書きできることを Apache に伝えています。
より良い例として、仮想ホストに次の構成があるとします。
<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
。
答え2
まず、次のコマンドを使用して書き換えを有効にします。
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 で動作しました。
答え3
私の場合は、次のように動作しました。
次の行を追加する必要がありました。
Order allow, deny
Allow from all
つまり次のようになります:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>
答え4
これらのチュートリアルで私が遭遇した一般的な問題は、default.confファイルが存在しないことです。
/etc/apache2/sites-available
変更する場所を見つけることができましたが、それはここのapache2.confファイルでした
/etc/apache2/apache2.conf
これが良いアイデアかどうかはよく分かりませんが、私にとってはうまくいきましたし、私がいる環境では安全です。