在配置nginx

时间:2018-10-17 10:56:35

标签: php nginx subdomain

我想为我的域配置自动创建子域:

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,然后它可以正常运行。

如何解决?

1 个答案:

答案 0 :(得分:0)

使用命名捕获,因为数字捕获可能超出范围。

例如:

server_name  ~^(?<subdomain>.*)\.example\.com$; 
root /www/source/$subdomain;

有关更多信息,请参见this document