伙计们,网站运行良好,只是文件 .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找不到页面时显示内容。
该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。
| 归档时间: |
|
| 查看次数: |
2956 次 |
| 最近记录: |