nginx .htaccess 位于两个不同的文件夹中

nginx .htaccess 位于两个不同的文件夹中

我有一个包含 2 个 .htaccess 文件的脚本。第一个 .htaccess 文件位于根目录中,第二个位于根目录下名为 upload 的文件夹中。

然而,我无法弄清楚的是,配置 nginx 以将适当的规则应用于上传文件夹中的 .htaccess 文件的正确方法是什么?

答案1

nginx 不支持.htaccess 文件。

您必须将配置移至 nginx 配置文件夹。

一旦你掌握了它,nginx 语法就相当简单了,而且他们的文档也相当不错。而且很多关于如何在 nginx 中实现 Apache 上特定功能的在线资源。

您可以使用.htaccess -> nginx 转换器类似这个做出所有必要的改变。

然后,不要将其存储在该目录中,而是将其添加到配置中的某个位置下。

假设你有一个 .htaccess 文件/var/sites/example.com/foo

将其转换为 nginx,然后将其存储在/etc/nginx/includes(或您的 nginx 配置文件夹所在的任何位置)中foo.access

然后将其包含在主配置文件中:

server {
    listen 80;
    server_name example.com;

    location /foo {
        include includes/foo.access;
    }
}

为每个 .htaccess 文件添加一个位置条目。

如果您对配置文件夹的访问权限有限(例如,如果您只能通过 FTP 访问共享服务器下的站点),则可以将与 nginx 兼容的文件放在您的 webroot 中,并要求服务器管理员从 includes 目录中进行软链接:

ln -s /var/sites/example.org/foo.access /etc/nginx/includes/foo.access

因为它们位于 webroot 中,因此可以公开访问,所以您需要将其添加到主配置中:

location ~ (\.access) {
    return 403;
}

这样,任何试图访问这些文件的人都将被阻止。

相关内容