以前的服务器运行在 Apache 上,但现在我已切换到 Nginx。一切都运行良好,只是我不知道如何将这一行 Apache 转换为我的工作 nginx 配置
SetEnvIf Host "^([^\.]+)\.my-shop\.dev$" MY_ENV=$1
它需要做的是,它需要读取第一个“param/subdomain/something”并将其设置为环境变量
到目前为止,我正尝试通过做这样的事情来实现这一点,但没有成功
server {
listen 80 ;
server_name $\.my-shop\.dev;
location ~* \.php$ {
try_files $uri $uri/ /index.php?q=&$args;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_param MY_ENV $1;
}
}
如果您需要任何其他信息,请告诉我,我会提供。谢谢!
答案1
要捕获商店子域名的主要部分,您可以使用以下命令:
server {
listen 80 ;
# match and catch the subdomain part in $prefix for later usage:
server_name ~^(?<prefix>.+)\.my-shop\.dev$;
location ~* \.php$ {
[...] # removed for better readability
# add MY_ENV env variable to the value of earlier captured $prefix:
fastcgi_param MY_ENV $prefix;
}
}
更详细的解释和其他用例见http://nginx.org/en/docs/http/server_names.html#regex_names