如何设置Nginx配置来重写我的子域名

时间:2012-10-10 06:06:18

标签: nginx url-rewriting subdomain

我尝试使用Nginx设置子域名,但是我收到了一些错误。以下是我的配置:

server {
    listen 80;
    server_name dimain.com *.domain.com;
    root /path/to/fuelphp_project/public;

    location / {
        index  index.php index.html index.htm;
        if ($host ~ (.*)\.(.*) ) {
                set $sub_name $1;
                rewrite ^/(.*)$ /index.php/$sub_name/$1 last;
                break;
        }

        if (!-e $request_filename) {
            rewrite ^.*$ /index.php last;
            break;
        }
    }

    ...
}

我希望结果如下:

sub1.domain.com/c1/a1 -> domain.com/sub1/c1/a1
sub2.domain.com/c2/a2 -> domain.com/sub2/c2/a2

如何纠正?

1 个答案:

答案 0 :(得分:0)

server {
  server_name sub1.domain.com;
  return 301 "http://domain.com/sub1${uri}";
}

这对你有用吗?

我刚刚在这里注意到了答案:https://serverfault.com/questions/426673/nginx-redirect-subdomain-to-sub-directory

server {
  server_name ~^(?<sub>[a-zA-Z0-9-]+)\.domain\.com$; # will cause the sub-domain to be placed in $sub
  return 301 "http://domain.com/${sub}${uri}";
}

我认为正则表达式也可以是一个非常酷的解决方案......取决于你需要的东西。