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

これは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 をそこに配置すべきかどうかはわかりません。これは正しい方法でしょうか、それとも私のコンピューターが何らかの形でクラッシュしてしまうのでしょうか?

答え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をオーバーライドするためにのみ ファイルを使用できます。AllowDenyOrder

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

答え2

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

sudo a2enmod rewrite

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

sudo service apache2 restart

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

/etc/apache2/sites-available

という名前のファイルを編集しdefaultAllowOverride 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

これが良いアイデアかどうかはよく分かりませんが、私にとってはうまくいきましたし、私がいる環境では安全です。

関連情報