我在 /var/www/html/htc 目录中有一个 .htaccess 文件,其中包含针对 bookmatic.net 的特定规则,还有另一个 .htaccess 文件,其中包含针对 /var/www/html 中所有域的一般规则
访问 bookmatic.net 时,/htc 中的 .htaccess 文件运行正常,但 /html 中的文件被忽略。有人能帮忙吗?
bookmatic.net 在 httpd.conf 中的规范如下:
<VirtualHost *:443>
ServerName bookmatic.net
ServerAlias *.bookmatic.net
DocumentRoot /var/www/html/htc
AllowEncodedSlashes On
<Directory /var/www/html/htc>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
LimitRequestBody 25000000
LimitXMLRequestBody 25000000
</Directory>
RewriteEngine on
</VirtualHost>
答案1
AllowOverride All
.htaccess
是告诉 Apache 在文件中查找更多配置的指令。
该 vhost 告诉 Apache 在 及更深层的地方查找.htaccess
文件/var/www/html/htc
,所以它不会覆盖.htaccess
中的文件/var/www/html
。
解决这个问题的一种方法是创建另一个像这样的块(可能在httpd.conf
这个 vhost 中,如果这样更有意义的话):
<Directory /var/www/html>
AllowOverride All
</Directory>
答案2
你有AllowOverride All
。<Directory /var/www/html/htc>
我想这是不允许的/var/www/html
。你可以试试:
<Directory /var/www/html>
AllowOverride All
</Directory>