【问题标题】:nginx: remove subdirectory from urlnginx:从 url 中删除子目录
【发布时间】:2020-03-15 02:55:13
【问题描述】:

这个网络应用程序我以前一直在目录/foo,所以,我可以访问http://example,com/foo。但是现在他们已经将该目录更改为/foo/public,我必须转到https://example.com/foo/public

由于无聊的原因,对我来说最好的方法是从 url 中删除多余的子目录public,而不将文件移动到单独的位置。在 nginx 中,我该怎么做?

我尝试了很多东西,包括:

location /foo {
    root /var/www/example.com/htdocs/mysite/foo/public;
}

但由于某种原因,我收到 403 或 404 表示找不到目录 /var/www/example.com/htdocs/mysite/foo/public/foo/index.php

编辑

配置文件的相关部分现在如下所示:

location ~ /\.ht {
    deny  all;
}

location / {
    root /var/www/example.com/htdocs/mysite;
}

location /foo/ {
    alias /var/www/example.com/htdocs/mysite/foo/public/;
}

location ~ \.php$ {
    try_files $uri $uri/ =403;
    fastcgi_split_path_info         ^(.+\.php)(.*)$;
    fastcgi_pass                    webmail;
    fastcgi_index                   index.php;
    fastcgi_param  SCRIPT_FILENAME  $request_filename;
    include                         fastcgi_params;
    fastcgi_param  QUERY_STRING     $query_string;
    fastcgi_param  REQUEST_METHOD   $request_method;
    fastcgi_param  CONTENT_TYPE     $content_type;
    fastcgi_param  CONTENT_LENGTH   $content_length;
}

现在 /foo/ 目录中的 PHP 文件似乎存在问题,无法正常工作,并给我一个 403 错误(或者我在 try_files 行中设置的错误代码)。例如,应该有一个edit.php 文件,当我尝试打开它时返回错误 403。但是,还有一个 example.js 文件,当我尝试打开它时,它可以工作。

【问题讨论】:

  • 出现错误,因为位置始终是 /foo。您必须访问 example.com/foo

标签: nginx url-rewriting


【解决方案1】:

root 基本上是在请求位置之前添加指定路径,包括匹配的部分。这就是为什么使用/foo 你最终会进入不存在的foo/public/foo 目录,因此会出现错误。如果你想用路径替换匹配的位置,你应该使用alias

只需将 root 更改为 alias 就可以满足您的需求。

来源:aliasroot

【讨论】:

  • 它没有。它就像什么都没有(在旧目录中有一个文件告诉我路径已更改为公共目录。我正在获取该文件。为了确保我还尝试设置错误的路径,在这种情况下我在错误日志中收到 404 和有关不存在目录的警告。
  • 感谢您的帮助。如果我尝试打开example.com/public,它会尝试打开mysite/foo/public/public,所以我很难过。也许这只是php文件的问题?
  • 尝试在locationalias 参数中添加斜杠。
  • 是的,我做了......同样的问题。
  • 好的,所以问题必须与 php 文件有关,因为在我的 nginx conf 中还有一个 location ~ .php$ 块,其中包含 =403 的 try_files 行,我将其更改为 =405,这会导致我收到 405 错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-25
  • 1970-01-01
  • 2021-05-24
  • 1970-01-01
  • 2019-03-08
  • 1970-01-01
  • 2021-04-01
相关资源
最近更新 更多