2013-03-07 113 views
2

我想在我的网站上有各种子域名,例如:biology.mysite.com子域使用NGINX和Codeigniter

目前我在我的nginx.conf如下:

server { 
    listen 80; 
    server_name biology.mysite.com; 
    return 301 https://mysite.com/tags/biology$request_uri; 
} 

这个代码在,如果你的浏览器指向到biology.mysite.com,它重定向到https://mysite.com/tags/biology和正确的生物学内容加载。

但是,我不要想重定向的网址,但希望保持子域为url。

所以我换成下面的代码上面的基础上this gist但它没有任何效果(意指向biology.mysite.com简单地去mysite.com):

 if ($host ~* ^www\.([a-z0-9]*)\.(mysite\.com)) 
     { 
      set $tagname $1; 
      set $host_without_www $2; 
      rewrite ^/(.*)$ $scheme://$tagname.$host_without_www/ permanent; 
     } 

     if ($host ~* ^([a-z0-9]+)\.(mysite\.com)) 
     { 
      set $tagname $1; 
      set $host_without_www $2; 

      rewrite ^/$ /index.php/tags/index/ last; 
      rewrite ^/(.+)$ /index.php/$1 last; 
     } 

的思考?

注意我张贴这在这里,而不是Serverfault的原因为B/C我使用笨框架(其中有一个独特的路由方案),因此,答案可能涉及NGINX和笨的知识。

+0

您可能需要等一会儿。有时服务器需要时间来调整其设置。 – shnisaka 2013-03-07 02:42:21

+1

@shnisaka谢谢是的,我已经等了大约30分钟了,同样,第一个代码块的作品表明,等待不太可能是问题。 – 2013-03-07 02:46:21

+0

@shnisaka :)哈哈... timpeterson你使用nginx作为独立还是作为apache的代理? – ddjikic 2013-03-07 09:16:53

回答

1

我相信你最后重写应该看上去象下面这样:

rewrite ^/(.+)$ /index.php/tags/$tagname$1 last; 

UPDATE: 如果要重定向像subdomain.mysite.com请求(不URI部分)标签控制器和使用域法你应该改变以下

rewrite ^/$ /index.php/tags/index/ last; 

线

rewrite ^/$ /index.php/tags/$tagname/ last; 

lynxluna的nginx配置和注释中提到的要点是错误的。

+0

- @亚历山大谢谢,不幸的是,不幸的是.. – 2013-03-11 22:00:02