web-dev-qa-db-ja.com

Ubuntu Apache 2サーバーで無視される.htaccessファイル

Apache2を実行している新しくインストールされたUbuntuサーバー上の.htaccessファイルに問題があります。

WordPressファイルが置かれているディレクトリ内の.htaccessファイルは、サーバーがページを読み込むときに考慮されません。 Apache2.confファイルにはAllowOverrideステートメントはありませんが、デフォルトはAllであり、これを含めても何も変わりません。

ローカル.htaccessファイルの内容をセクションに含めてみました。私もこれを試しました:

<Directory /var/www/mydomain.com/html>
AllowOverride All
</Directory>

また、/ etc/Apache2/sites-available/default(デフォルトではすべてAllowOverrideに設定されている)のNoneのすべてのインスタンスをAllに変更しようとしました。

しかし、私には運がなかった。

これを解決する方法がわからない。

2
Donald Jenkins

Apacheが使用しているのと同じファイルをレビューしているApache構成ファイルですか?

Apache2ctl -Vを実行し、SERVER_CONFIG_FILEエントリが期待どおりであること、確認しているVirtualHosts宣言を参照していることを確認します。 (新規インストールの典型的な問題ではなく、他の誰かの設定を継承した場合の可能性)

.htaccess以外を指定する AccessFileName ディレクティブがあります

その場合、それに応じて.htaccessファイルの名前を変更するか、ディレクティブをコメント化してみてください(既存のオーバーライドファイルが依存していないことを確認できる場合)。

AllowOverride 許可されるディレクティブを制限するディレクティブはありますか?

このディレクティブの問題をすでに探して解決しているようですが、Apacheを再起動してAccessFilenameまたはAllowOverrideディレクティブに変更を適用する必要があります。

オーバーライドファイルのディレクティブは、インストールされているモジュールでサポートされていますか?

これは、オーバーライドディレクティブがIfModule条件でラップされている場合、特に見落としがちです。

テストする最も簡単な方法は、他のオーバーライドディレクティブの前にコアディレクティブをオーバーライドファイルに追加することです。たとえば、.htaccessファイルの先頭に以下を追加します。

Order allow,deny
deny from all

オーバーライドファイルがApacheによって解析されると、Apacheはディレクトリに対するすべてのリクエストを拒否します-オーバーライドファイルは解析されているが他のディレクティブは無視されていることをテストで確認した場合、 インストールされているモジュールをチェック 必要なモジュールを有効にします-例a2enmod rewrite(おそらくWordPressインストールが使用しようとしているモジュールです。Ubuntuの最近のリリースではデフォルトで有効になっていません)

2
danlefree