我使用 git 部署了一个 Drupal 网站(嗯,好的,开发人员部署它;我尽量让他们远离麻烦),因此该网站在文档根目录中有一个目录.git
和一个文件.gitignore
。
目前,如果在 Web 浏览器中访问这些文件,这些文件的权限足以导致 nginx 返回 403 Forbidden 错误。
但是,我希望 nginx 完全否认这个文件和目录的存在,如果有人试图在浏览器中访问它们,则返回 404。
但是等等,还有更多!
我真正想要发生的是让浏览器接收到 Drupal 生成的 404 错误页面。在 Drupal 的admin/settings/error-reporting
页面中,我看到 404 错误被发送到http://www.example.com/404error
,这是一个 Drupal 节点,具有 Internet 上更有趣的 404 页面之一。
我的 nginx 配置已经包含一个@drupal
将请求传递给 Drupal 的块。所以我想将请求传递给 Drupal,但我也不希望 Drupal 尝试提供现有的静态文件,而是简单地提供 404 页面。
location @drupal {
rewrite ^/(.+)$ /index.php?q=$1 last;
}
不幸的是,谷歌在这里并没有太大帮助。大多数人似乎都有相反的问题。如何将.git
目录或.gitignore
文件中的任何内容请求发送到 Drupal 的 404 页面?
尝试为
.git
目录创建一个位置块并将其设置为internal。这应该触发任何请求的 404 响应。如果这些没有传递给 Drupal,您可能需要定义一个error_page来执行此操作。另一种选择是将这些请求重写为不存在的东西: