【问题标题】:How to fix redirects in nginx after the front-slash in the end of the URL如何在 URL 末尾的正斜杠之后修复 nginx 中的重定向
【发布时间】:2019-10-12 23:04:34
【问题描述】:

我们正在将我们的网站从 example.se 更改为 example.com,还将一些类别从瑞典语更改为英语,因此我需要将旧 URL 指向具有新名称的新 URL。

我正在尝试将 example.se/something 重定向到 example.com/anything-else

我已成功完成从 example.se > example.com 的重定向,但每当我尝试转到 example.com/something > example.com/anything-else 时,我都会收到 404。

这是 nginx 配置文件:

server {
    listen 80;
    listen 443;
    server_name example.se www.example.se;

    rewrite ^/(.*)$ http://.example.com/$1 permanent;
    rewrite ^/something/$ /anything-else/ permanent;
}

我设法完成的是从 example.se > example.com 的重定向,但每当我尝试转到 example.com/something(我想指向 example.com/anything-else)我得到一个 404。

【问题讨论】:

    标签: nginx http-status-code-301


    【解决方案1】:

    在第二次重定向中,您应该指定域名:rewrite ^/something/$ http://example.com/anything-else/ permanent 而不是 rewrite ^/something/$ /anything-else/ permanent

    或者你可以使用if

    if ($request_uri  =  / )  {
              rewrite (.*) http://example.com/ permanent;
          }
    if ($request_uri ~ ^/something) {
              rewrite (.*) http://example.com/anything-else permanent;
          }
    

    【讨论】:

    • 我用 if 添加了那个但是当我去 example.se/something 我登陆 example.com/something 而不是 example.com/anything-else 当我尝试了完整的 URL,我也得到了 404。
    • @Phlaryu 那么,您的配置现在看起来像这样吗? :server { listen 80; listen 443; server_name example.se www.example.se; if ($request_uri = / ) { rewrite (.*) http://example.com/ permanent; } if ($request_uri ~ ^/something) { rewrite (.*) http://example.com/anything-else permanent; } }
    • 啊!打错字了,好用!!但是当我尝试转到 example.se 时,我在 chrome 中收到了 ERR_SSL_PROTOCOL_ERROR,但是 www.example.se 会在没有警告的情况下重定向。
    猜你喜欢
    • 1970-01-01
    • 2012-04-12
    • 2016-12-22
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 2014-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多