apache2.conf 为服务器上托管的所有站点写入全局重定向

apache2.conf 为服务器上托管的所有站点写入全局重定向

我一直试图将类似以下的规则添加到 /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 文件中。

相关内容