伙计们,网站运行正常,只是 .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。