跳至正文

nginx error_page带get参数重定向

我在我的个人主页里加了这样一行代码

<script>
  // 检查是否有http错误选项
        $(document).ready(function () {
            var obj = GetRequest();  // 获取get参数
            if (obj.error != undefined) {
                page = document.getElementById('page')
                if (obj.error == 404) {  // 404
                    page.innerHTML = '<h2>404 Not Found</h2>\
                    <p>看起来你请求的一些资源没有被找到</p>\
                    <p>或者是它本来就不存在呢?</p>\
                    <hr />\
                    <a href="/index.html" target="_blank">返回主站</a>'
                    swal("404 Not Fount", "你请求的一些资源没有被找到", "error");
                }
            }
            else {
                swal(
                    {
                        title: '新年快乐!', 
                        text: ""岁月可以褪去记忆,却褪不去我们一路,留下的欢声笑语。祝你新春快乐,岁岁安怡!"",
                        timer: 5000
                    }
                ) // 新年快乐
            }
        });
</script>

提交代码之后,当我手动访问它时,它工作的很好 => 查看预览

但是在我更改nginx配置文件,并重启nginx后,它并没有按我预期规则跳转至/index.html?error=404,而是/index.html(get数据似乎都被省略了)

error_page 404 /index.html?error=404
error_page 404 /?error=404 # 我还试过不加index.html

后来,我发现了解决方案

方案就是在error_page中填写完全链接(带协议名),如下:

error_page 404 https://yang-qwq.ml/index.html?error=404

问题虽然解决了,但是这种方案并不灵活,当我们的域名改变的时候,重定向规则并不会自动变化

所以我们可以把规则中的域名改为$host变量:

error_page 404 https://$host/index.html?error=404

这样错误重定向就会随着你访问的地址变化而变化了

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注