nginx 别名反映在 PHP_SELF (fpm)
nginx alias to reflect in PHP_SELF (fpm)
我的文件结构如下:
nginx 默认根目录:
~/marketplace/
正在尝试为以下对象创建别名:
~/marketplace/endpoints/sdk/tag.php
在 URI 位置下 /tagframe.htm
基本上,当我转到 http://marketplace/tagframe.htm?t=1&c=2 时,我需要将请求路由到 ~/marketplace/endpoints/sdk/tag.php 并保留 $query_string
虽然这有效:
location /tagframe.htm {
try_files $uri /endpoints/sdk/tag.php$is_args$args;
}
它用文件的实际路径 (tag.php) 填充 PHP_SELF,而不是我需要的 URI 部分 (tagframe.htm) - 它认为 / tagframe.htm 是一个真实的文件并将其填充到 PHP_SELF.
例如Lighttpd通过其
alias.url /tagframe.htm => ~/marketplace/endpoints/sdk/tag.php
并且 PHP_SELF 显示我 /tagframe.htm
欺骗它的尝试是:
location /tagframe.htm {
alias $root_path/endpoints/sdk;
rewrite (.*) /endpoints/sdk/tag.php?$query_string;
include php-fpm;
}
P.S $root_path 是我的地图项目根目录的默认值(hacky),php-fpm 文件是默认 fast_cgi 代理到 php :
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/tmp/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SERVER_NAME $host;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
知道我做错了什么吗?
您在滥用 PHP_SELF。它旨在显示 the actual script file name 即 运行,而不是 URL。
您似乎要找的是 REQUEST_URI,即:
$_SERVER["REQUEST_URI"]
我的文件结构如下:
nginx 默认根目录:
~/marketplace/
正在尝试为以下对象创建别名:
~/marketplace/endpoints/sdk/tag.php
在 URI 位置下 /tagframe.htm
基本上,当我转到 http://marketplace/tagframe.htm?t=1&c=2 时,我需要将请求路由到 ~/marketplace/endpoints/sdk/tag.php 并保留 $query_string
虽然这有效:
location /tagframe.htm {
try_files $uri /endpoints/sdk/tag.php$is_args$args;
}
它用文件的实际路径 (tag.php) 填充 PHP_SELF,而不是我需要的 URI 部分 (tagframe.htm) - 它认为 / tagframe.htm 是一个真实的文件并将其填充到 PHP_SELF.
例如Lighttpd通过其
alias.url /tagframe.htm => ~/marketplace/endpoints/sdk/tag.php
并且 PHP_SELF 显示我 /tagframe.htm
欺骗它的尝试是:
location /tagframe.htm {
alias $root_path/endpoints/sdk;
rewrite (.*) /endpoints/sdk/tag.php?$query_string;
include php-fpm;
}
P.S $root_path 是我的地图项目根目录的默认值(hacky),php-fpm 文件是默认 fast_cgi 代理到 php :
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/tmp/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SERVER_NAME $host;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
知道我做错了什么吗?
您在滥用 PHP_SELF。它旨在显示 the actual script file name 即 运行,而不是 URL。
您似乎要找的是 REQUEST_URI,即:
$_SERVER["REQUEST_URI"]