.htaccess 不工作(apache2 | ubuntu 18.04)

Fel*_* S. 5 apache2 .htaccess

伙计们,网站运行良好,只是文件 .htaccess 不起作用,我用谷歌搜索了很多,已经启用a2enmod rewrite并尝试了很多东西,但没有用。

obs:我以网站example.com为例

这就是我/etc/apache2/sites-available/000-default.conf的:

<VirtualHost *:80>

    ServerAdmin admin@example.com
    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>
Run Code Online (Sandbox Code Playgroud)

这就是我/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>
Run Code Online (Sandbox Code Playgroud)

我的 .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
Run Code Online (Sandbox Code Playgroud)

但它不会禁止目录列表,也不会在404.php找不到页面时显示内容。

pa4*_*080 6

AllowOverride指令的当前默认设置会导致您的问题。如果要允许.htaccess某个虚拟主机的文件覆盖所有可能的内容,则需要以如下方式更改其配置:

cat /etc/apache2/sites-available/000-default.conf
Run Code Online (Sandbox Code Playgroud)
<VirtualHost *:80>

    ServerAdmin admin@example.com
    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>
Run Code Online (Sandbox Code Playgroud)

更改 .conf 文件后不要忘记重新加载或重新启动 Apache。