在我的 PHP 应用程序中:
die($_SERVER['SERVER_NAME']);
Run Code Online (Sandbox Code Playgroud)
请求:
sub1.example.com
Run Code Online (Sandbox Code Playgroud)
结果:
example.com
Run Code Online (Sandbox Code Playgroud)
我的 NGINX 配置:
server
{
server_name .example.com;
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
root /var/www/html/example;
index index.php;
location ~ \.php$ {
if (-f $request_filename) {
fastcgi_pass 127.0.0.1:9000;
}
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location / {
if ($request_filename ~ /sub1) {
rewrite ^ http://sub1.example.com/? permanent;
}
if ($request_filename ~ /sub2) {
rewrite ^ http://sub2.example.com/? permanent;
}
if (!-f $request_filename) {
rewrite ^(.*)$ /index.php last;
}
}
}
Run Code Online (Sandbox Code Playgroud)
为什么子域没有在 php 中被拾取?
$_SERVER['SERVER_NAME']
是虚拟主机的名称,它.example.com
在你的 nginx 配置中。$_SERVER['HTTP_HOST']
无论 nginx server_name 值如何,您是否都需要请求中的主机名。
归档时间: |
|
查看次数: |
8136 次 |
最近记录: |