我正在尝试设置一个别名,这样当有人访问时/phpmyadmin/
,nginx 将从而/home/phpmyadmin/
不是从通常的文档根目录提取它。但是,每次我提取 URL 时,它都会在所有未通过 fastcgi 提取的项目上给出 404。fastcgi 似乎工作正常,而其余的则不行。strace
告诉我它正在尝试从通常的文档根目录提取其他所有内容,但我不知道为什么。有人可以提供一些见解吗?
这是我的配置的相关部分:
location ~ ^/phpmyadmin/(.+\.php)$
{
include fcgi.conf;
fastcgi_index index.php;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_param SCRIPT_FILENAME /home$fastcgi_script_name;
}
location /phpmyadmin
{
alias /home/phpmyadmin/;
}
答案1
找到了一个办法。我不确定这是否是最好的办法,但它现在肯定有效。
这是我所做的:
location ~ ^/phpmyadmin/(.*)$
{
alias /home/phpmyadmin/$1;
}
答案2
我不确定,但你有没有尝试过这样写:
location /phpmyadmin/
{
alias /home/phpmyadmin/;
}
另外,您尝试从哪个 URI 访问它?
据我了解,你必须使用 URI
/home/phpmyadmin/
不仅仅是
/phpmyadmin/
你可以在这里读更多关于它的内容:http://nginx.org/en/docs/http/ngx_http_core_module.html
答案3
尝试
location ^~ /phpMyAdmin/
{
alias /home/phpmyadmin/;
location ~ \.php$
{
include fcgi.conf;
fastcgi_index index.php;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_param SCRIPT_FILENAME /home$fastcgi_script_name;
}
}
答案4
就我而言:评论此
# location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css|svg)$ {
# try_files $uri $uri/ @router;
# }
是工作
location /realpath {
alias /Users/hhh/Desktop/work/xxx/public;
# return 200 '$request_filename:$document_root:$realpath_root\n';
}