.htaccessが機能しない(apache2 | ubuntu 18.04)

Aug 02 2020

ウェブサイトは正常に機能しています。ファイル.htaccessが機能しないだけです。グーグルでたくさん検索し、すでに有効a2enmod rewriteにしてたくさんのことを試しましたが、機能しませんでした。

obs:例としてウェブサイトexample.comを使用しています

これ/etc/apache2/sites-available/000-default.confは私の方法です:

<VirtualHost *:80>

    ServerAdmin [email protected]
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html

    ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

そしてこれ/etc/apache2/apache2.confは私の方法です:

<Directory />
        Options FollowSymLinks
        AllowOverride All
        Require all denied
</Directory>

<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

これが私の.htaccessです。

#DISALOW DIRECTORY LISTING
Options -Indexes

ErrorDocument 400 /.error.php
ErrorDocument 401 /.error.php
ErrorDocument 403 /403.php
ErrorDocument 404 /404.php
ErrorDocument 405 /.error.php
ErrorDocument 408 /.error.php
ErrorDocument 414 /.error.php
ErrorDocument 500 /500.php
ErrorDocument 502 /.error.php
ErrorDocument 504 /.error.php

ただし、ディレクトリリストを禁止したり、404.phpページが見つからないときにコンテンツを表示したりすることはできません。

回答

4 pa4080 Aug 02 2020 at 02:59

AllowOverrideディレクティブの現在のデフォルト設定が問題の原因です。.htaccess特定の仮想ホストのファイルによって可能なすべてのオーバーライドを許可する場合は、次のように構成を変更する必要があります。

cat /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>

    ServerAdmin [email protected]
    ServerName example.com
    ServerAlias www.example.com

    DocumentRoot "/var/www/example.com/public_html"

    <Directory "/var/www/example.com/public_html">
        AllowOverride All
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

.confファイルの変更後、Apacheをリロードまたは再起動することを忘れないでください。