如何在 nginx 上将特定页面重定向到另一个 url?

如何在 nginx 上将特定页面重定向到另一个 url?

我正在使用托管于此示例 URL 上的 matomo:

https://testmatomo.azureapp.com

因为我想保护 matomo 的管理页面,所以我为托管在以下特定域上的 Cloudflare Access w/ Zero Trust:

https://testmatomo.companyname.com

当我直接访问 CF 链接时,它工作正常。但是当我尝试访问原始链接时,仍然可以访问登录管理页面。我如何重定向来自https://testmatomo.azureapp.com/index.php(所有管理页面都从这个/index.php***开始)https://testmatomo.companyname.com

编辑:

只有位于的管理页面

https://testmatomo.azureapp.com/index.php

应重定向到新 URL。由于我们正在进行浏览器跟踪,因此所有请求仍应重定向到旧 URL。

这是我当前的配置:

  server {
  server_name testmatomo.azureapp.com;
  root /var/www/matomo/;
  index index.php;

  location ~ ^/(index|matomo|piwik|js/index).php {
    include snippets/fastcgi-php.conf;
    fastcgi_param HTTP_PROXY "";
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
  }
  
  location = /plugins/HeatmapSessionRecording/configs.php {
    include snippets/fastcgi-php.conf;
    fastcgi_param HTTP_PROXY "";
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
  }

  location ~* ^.+\.php$ {
    deny all;
    return 403;
  }

  location / {
    try_files $uri $uri/ =404;
  }

  location ~ /(config|tmp|core|lang) {
    deny all;
    return 403;
  }

  location ~ \.(gif|ico|jpg|png|svg|js|css|htm|html|mp3|mp4|wav|ogg|avi|ttf|eot|woff|woff2|json)>
    allow all;
  }

  location ~ /(libs|vendor|plugins|misc/user) {
    deny all;
    return 403;
  }

答案1

有几种方法可以做到这一点,请选择最适合您情况的方法。编辑您的 nginx 配置文件并向其中添加必要的信息。

server {
# Temporary redirect to an individual page
rewrite ^/old-url$ http://www.example.com/new-url redirect;
}

server {
# Permanent redirect to an individual page
rewrite ^/old-url$ http://www.example.com/new-url permanent;
}

server {
# Permanent redirect to non-www
server_name www.example.com;
rewrite ^/(.*)$ http://example.com/$1 permanent;
}

server {
# Permanent redirect to www
server_name example.com;
rewrite ^/(.*)$ http://www.example.com/$1 permanent;
}

server {
# Permanent redirect to new URL
server_name example1.com;
rewrite ^/(.*)$ http://example2.com/$1 permanent;
}

最后一个可能适合你的情况。然后检查你的配置并重新启动 nginx:

$ nginx -t
$ systemctl restart nginx

相关内容