.htaccess 不起作用(apache2 | ubuntu 18.04)

.htaccess 不起作用(apache2 | ubuntu 18.04)

伙计们,网站运行正常,只是 .htaccess 文件不起作用,我在 Google 上搜索了很多,已经启用a2enmod rewrite并尝试了很多东西,但都没有用。

注意:我使用网站 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找不到页面时不显示内容。

答案1

当前默认设置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。

相关内容