我在 nginx.conf 中有 HTTPS 重定向
但是如果请求的 URI 是 HTTP 并且是 404 - 我不需要重定向。 有没有针对此特定配置的解决方案?
另外,是否有可能关闭 404 链接的 HTTPS + www 重定向,例如http://www.test.com
如果第 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。
我希望这能有所帮助。