Nginx 禁用 404+http uri 的 https 重定向

Nginx 禁用 404+http uri 的 https 重定向

我在 nginx.conf 中有 HTTPS 重定向

  1. 但是如果请求的 URI 是 HTTP 并且是 404 - 我不需要重定向。 有没有针对此特定配置的解决方案?

  2. 另外,是否有可能关闭 404 链接的 HTTPS + www 重定向,例如http://www.test.com

  3. 如果第 1 点或第 2 点无法完成,我可以使用 nginx 硬编码 404 URL 列表以完全关闭它们的任何重定向并仅显示 404 页面吗?(HTTPS 和 www)

WordPress + Nginx(+ Vestacp)

server {
    listen      x.x.x.x:80;
    server_name test.com www.test.com;
    root        /home/admin/web/test.com/web/;
    index       index.php index.html index.htm;
    access_log  /var/log/nginx/domains/test.com.log combined;
    access_log  /var/log/nginx/domains/test.com.bytes bytes;
    error_log   /var/log/nginx/domains/test.com.error.log error;
    return 301 https://test.com$request_uri;
}

答案1

欢迎来到 ServerFault。

但是如果请求的 URI 是 HTTP 并且是 404 - 我不需要重定向。 有没有针对此特定配置的解决方案?

我不知道该怎么做。我不确定这是否有可能。

另外,是否有可能关闭 404 链接的 HTTPS + www 重定向,例如http://www.test.com

我不明白这个问题。

如果第 1 点或第 2 点无法完成,我可以使用 nginx 硬编码 404 URL 列表以完全关闭它们的任何重定向并仅显示 404 页面吗?(HTTPS 和 www)

/home/admin/web/test.com/web/404.conf这是可能的。假设我们有以下格式的文件列表...

/aboutt-us/ 404;
/about-uss/ 404;
/contactt-us/ 404;
/contact-uss/ 404;

除了文本“404”,我们还可以输入除“0”(零)之外的任何内容。

修改后的配置如下...

map $uri $allwillburnn { include /home/admin/web/test.com/web/404.conf; }

server {
    listen      x.x.x.x:80;
    server_name test.com www.test.com;
    root        /home/admin/web/test.com/web/;
    index       index.php index.html index.htm;
    access_log  /var/log/nginx/domains/test.com.log combined;
    access_log  /var/log/nginx/domains/test.com.bytes bytes;
    error_log   /var/log/nginx/domains/test.com.error.log error;
    if ( $allwillburnn ) { return 404; }
    return 301 https://test.com$request_uri;
}

解释:默认情况下,对于上述404.conf文件中未列出的任何 URL,named 变量的$allwillburnn值将由地图。 在这种情况下,如果块被跳过,导致 301 重定向。

404.conf对于文件中列出的 URL ,$allwillburnn被赋值为非零值。在这种情况下,如果解析了块,则会导致 404。

我希望这能有所帮助。

相关内容