仅在 nginx 中对域的根进行重写

仅在 nginx 中对域的根进行重写

我已经运行 YOURLS 服务器来为我的公司托管短网址,以便我们可以向客户提供短网址。

我使用的是 nginx,对于域名的根目录,如果它们没有使用正确的短网址,我想重定向到我们的网站。因此 example.com/218a 会重定向到该短网址指向的任何内容,但 example.com 会转到我们的网站 @ domain.com。

现在,我正在使用一个只有元刷新才能重定向的 index.html 页面,但我想我应该能够在 nginx 配置中做到这一点,而且可能会更好。

如果可能的话,有人可以帮助我找到正确的方法,在服务器级别实现这一点,而不是使用元刷新?

我尝试了在这里找到的一些示例,但似乎都不起作用。

这是我的配置文件,供参考。

server {
    server_name www.domain.com;
    return 301 $scheme://domain.com$request_uri;
}

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.html index.htm index.php;

    # Make site accessible from http://localhost/
    server_name http://domain.com;

    location / {
        #YOURLS
        try_files $uri $uri/ /yourls-loader.php;
    }

    location ~ \.php$ {
        try_files $uri =404;
        include fastcgi_params;
        fastcgi_pass php5-fpm-sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_intercept_errors on;
    }
}

答案1

首先,该server_name指令在您的主块中无效serverserver_name仅包含域名,不包含 URL 的任何其他部分。

为了回答您的实际问题,请添加以下配置:

location = / {
    rewrite ^ http://domain.com permanent;
}

这使得所有与确切/位置匹配的 URI 都重定向到http://域名.com

相关内容