我想为我的域配置自动创建子域:
example.com -> source in /www/source/
abcd.example.com -> source in /www/source/abcd/
我正在使用此配置:
server {
listen 80;
server_name ~^(.*)\.example\.com$;
# If a directory doesn't exist...
if (!-d /www/source/$1) {
rewrite . example.com redirect;
}
# Sets the correct root
root /www/source/$1;
location ~* \.php$ {
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
}
在/www/source/abcd/
中,我有index.php
。但是它没有运行。当我转到abcd.example.com
时,出现“找不到文件”。
我将index.php
替换为index.html
,然后它可以正常运行。
如何解决?
答案 0 :(得分:0)
使用命名捕获,因为数字捕获可能超出范围。
例如:
server_name ~^(?<subdomain>.*)\.example\.com$;
root /www/source/$subdomain;
有关更多信息,请参见this document。