将子域重定向到主域,特定 URL 除外 - Nginx
Redirect subdomain to main domain except specific URLs - Nginx
我有一个如下的主域,我正在使用 Nginix 服务器
主域名: https://website.com/
子域: https://admin.website.com/
如果有人访问 https://admin.website.com/ 它需要重定向到 https://website.com/ - 我发现以下代码使用了多个服务器的组合(包括带有通配符子域的服务器):
server {
listen 80;
server_name admin.website.com;
add_header Content-Type text/plain;
return 200 "admin";
}
server {
listen 80;
server_name *.website.com;
return 301 $scheme://example.com$request_uri;
}
server {
listen 80;
server_name website.com;
add_header Content-Type text/plain;
return 200 "main";
}
但是从子域,如果有人访问以下 url https://admin.website.com/login 和任何后续页面,例如:
- https://admin.website.com/login/useraccount
- https://admin.website.com/login/useraccount/password
- https://admin.website.com/login/password/reset/
- https://admin.website.com/login/password/reset/&hdJ7dHsSJKDJ
等...
那么它不应该重定向到主域。它应该留在该子域页面上。有人有什么想法吗?
怎么样
server {
listen 80;
server_name admin.website.com;
...
location / {
return 301 $scheme://website.com$request_uri;
}
location /login {
# processing URL here
root </path/to/root>;
...
}
}
我有一个如下的主域,我正在使用 Nginix 服务器
主域名: https://website.com/
子域: https://admin.website.com/
如果有人访问 https://admin.website.com/ 它需要重定向到 https://website.com/ - 我发现以下代码使用了多个服务器的组合(包括带有通配符子域的服务器):
server {
listen 80;
server_name admin.website.com;
add_header Content-Type text/plain;
return 200 "admin";
}
server {
listen 80;
server_name *.website.com;
return 301 $scheme://example.com$request_uri;
}
server {
listen 80;
server_name website.com;
add_header Content-Type text/plain;
return 200 "main";
}
但是从子域,如果有人访问以下 url https://admin.website.com/login 和任何后续页面,例如:
- https://admin.website.com/login/useraccount
- https://admin.website.com/login/useraccount/password
- https://admin.website.com/login/password/reset/
- https://admin.website.com/login/password/reset/&hdJ7dHsSJKDJ
等...
那么它不应该重定向到主域。它应该留在该子域页面上。有人有什么想法吗?
怎么样
server {
listen 80;
server_name admin.website.com;
...
location / {
return 301 $scheme://website.com$request_uri;
}
location /login {
# processing URL here
root </path/to/root>;
...
}
}