Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nginx url重写规则_Nginx_Rewrite - Fatal编程技术网

Nginx url重写规则

Nginx url重写规则,nginx,rewrite,Nginx,Rewrite,我有这样的URL: http://example.com/site1 http://example.com/site2 ... ... http://example.com/siten 是的,有一个网站列表 但实际上我想通过以下方式访问子网站(以site1为例): 我在nginx.conf中所做的是: if ($host = site1\.example\.com){ rewrite ^/(.*) /example.com/site1/$1 break; } 是的,在本地

我有这样的URL:

http://example.com/site1
http://example.com/site2
     ...  ...
http://example.com/siten
是的,有一个网站列表

但实际上我想通过以下方式访问子网站(以
site1
为例):

我在
nginx.conf
中所做的是:

if ($host = site1\.example\.com){
    rewrite ^/(.*) /example.com/site1/$1 break;
}

是的,在本地机器上测试,我编辑了
/etc/hosts

127.0.0.1  example.com

但不是工作。有人能解释一下吗?

您必须为子域功能指定CNAME记录。没有它,任何web服务器配置规则都无法工作

在DNS记录管理面板(无论您使用什么)中,必须创建subdomain.domain.com并将DNS记录指向路由为domain.com的IP


对于本地计算机查找主机文件,请以管理员权限打开该文件,并在新行中添加127.0.0.1 subdomain.domain.com。

我应该在本地计算机中执行什么操作?编辑主机文件。查找hosts文件并键入例如127.0.0.1 sub.example.com您搞错了:不是
127.0.0.1 example.com
,而是
127.0.0.1 subdomain.example.com
,并确保
…0.1 subdomain…
之间的空格为制表符或几个空格字符。最好的办法是复制主机文件中的现有条目,该条目在您编辑任何内容之前就已经存在,并且很容易用127.0.0.1 subdomain.example.com替换现有条目。谢谢我在同事的帮助下解决了这个问题。应该是:添加
proxy\u set\u header HOST$HOST
如果($host=site1.example.com){rewrite^/(.*)/site1/$1 break;}
。当然,我应该在
/etc/hosts
中添加
127.0.0.1 site1.example.com
127.0.0.1  example.com