我一直试图将类似以下的规则添加到 /etc/apache2/apache.conf 文件中,但没有被注意到,而如果我将它们添加到单独的 .htaccess 文件中,它们就会被遵守,任何试图访问 readme.html 文件的人都将被重定向。我已经添加了以下规则,但没有注意到任何规则,包括 ServerSignature ServerTokens 规则。操作系统是 debian 7 wheezy
ServerSignature Off
ServerTokens Prod
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule readme\.html? - [NC,F]
RewriteRule changelog\.txt? - [NC,F]
</IfModule>
答案1
如果你有虚拟主机请注意,默认情况下,虚拟主机不会继承 Rewrite 配置。为了“继承”vHost 配置中的指令,每个 vHost 配置都需要:
RewriteEngine on
RewriteOptions Inherit
查看Apache 指令RewriteOptions
文档了解更多详情。
要在整个服务器范围内拒绝这两个文件,而不使用mod_rewrite
,您还可以使用<FilesMatch>
容器使用适当的访问控制指令。
对于 Apache 2.4:
<FilesMatch "(readme\.html|changelog\.txt)$">
Require all denied
</FilesMatch>
答案2
首先,我不明白你想要重定向什么,但首先,每个网站(vhost)的重写规则是应该添加重定向的地方,并且这些重定向是永久的,你应该用重定向 301 来做
除此之外,一个快速而粗暴的解决方案是使用以下命令禁用 apache 上的所有其他网站a2分散体这是手册页 -http://manpages.ubuntu.com/manpages/trusty/man8/a2dissite.8.html
然后只需将所有域作为别名添加到 000-default.conf 文件中,方法是添加
ServerAlias myfirstdomain.com myseconddomain.com www.myfirstdomain.com
注意:必须在
</Directory>
</Virtualhost>
标签和标签之前
这意味着指向你的服务器的任何域名都将由位于 /var/www/ 的默认 apache 网站应答
其次,请理解 Apache 从不同的文件调用设置。您正在修改的安全设置已经在名为/etc/apache2/conf-available/security.conf
在该文件中,您必须更改:ServerSignature Off ServerTokens Prod
除非您首先了解 apache2.conf 中所有设置都移到了哪里,否则不建议您对主 apache2.conf 进行修改。它们现在都位于不同的 .conf 文件中。