nginx - 多个域的位置重写

标签 nginx location url-rewriting query-string winginx

我从事多个项目,所以我有多个域:

1. domain1
2. domani2

例如如何重写

domain1/user 到 domain1/?page=user,

domain2/user to domain2/clientArea/userMain

现在我正在使用:

   location /user {
     rewrite ^/user$ /?page=user;
   }

但它重写了我所有的域。

P.S:我是nginx的新手,我正在使用 Winginx 本地服务器;

最佳答案

根据您是否有 1 个或 2 个 server-block,有 2 种方法可以做到这一点(如果您预计这 2 个域之间有很多配置差异,则使用 2,如果这 2 个域基本相同内容使用 1)

在 2 个 server 的情况下, block 配置如下所示:

server {
  server_name domain1;      
  location /user/ { rewrite ^ $scheme://$host/?page=user; }
  # add in rest of domain 1 config
}

server {
  server_name domain2;
  location /user/ { rewrite ^ $scheme://$host/clientArea/userMain; }
  # add in the rest of your domain 2 config

在单个 server block 的情况下,它看起来像这样:

server {
  server_name domain1 domain2;
  location /user/ {
    if ($host = domain1) { rewrite ^ $scheme://$host/?page=user; }
    if ($host = domain2) { rewrite ^ $scheme://$host/clientArea/userMain; }
  }
}

注意:您可以使用 ^ 正则表达式作为重写条件,因为它所在的 location/user/ block 已经选择了您要重写的 url。这使得它的效率略有提高,因为正则表达式的匹配速度会更快。

关于nginx - 多个域的位置重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13175237/

相关文章:

nginx - Kubernetes whitelist-source-range block 而不是白名单 IP

ruby-on-rails - 使用 RVM 为 Ruby 创建符号链接(symbolic link)

javascript - AngularJS:如何使用 $location.path() 发送参数

swift - 自定义注释为所有不同类型的 POI 显示相同的图像

node.js - Bouncy 或 nginx 用于负载平衡 Websocket?

nginx - 使用 proxy_pass 配置 Nginx

安卓 :How to get Current Location in Longitude and latitude?

php - 字符串参数的漂亮 URL

php - .htaccess 将 php 重写为 php 文件

iis-7 - IIS7 Url Rewrite - 为什么重定向起作用而重写不起作用?