【发布时间】: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