在 Nginx 中,我想将我的 subdomain.domain.com 重定向到 domain.com/sub/。我该怎么做?我想使用 domain.com 的现有站点配置文件,而不是创建一个新的。
我拥有的配置文件是(我该如何添加)
======
server {
listen 80;
server_name www.domain.com domain.com *.domain.com;
access_log /srv/www/domain.com/logs/access.log;
error_log /srv/www/domain.com/logs/error.log;
location / {
root /srv/www/domain.com/public_html;
index index.html index.htm;
}
位置 /phpmyadmin { 根 /usr/share; 索引 index.php; }
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /srv/www/domain.com/public_html$fastcgi_script_name;
}
}
=========
答案1
抱歉 Mike,你的 if 语句解决方案是个坏主意...请参阅 Nginx陷阱wiki 页面上的原因(在这种情况下,nginx 将评估每个请求的指令,这是低效的)...
在包含以下内容的服务器块上方添加另一个服务器块:
server {
server_name subdomain.domain.com;
rewrite ^ $scheme://domain.org/subdomain$request_uri redirect;
}
魔法就完成了……
答案2
这将进入你的服务器块。这未经测试,但应该可以工作或给你一个想法
if ($host ~* "^(.*)\.domain\.com$"){
set $subd $1;
rewrite ^(.*)$ http://domain.com/$subd permanent;
break;
}