首页 > 解决方案 > NGINX,尝试将一个 URL 重定向/重写直接到另一个 URL,但忽略 args 包括“#”

问题描述

我正在尝试将 URL 重写/重定向到另一个 URL,但是当它在参数中有一个“#”时,它会通过并显示在新的 URL 中,例如。

https://blah.co.uk/ep/doc/index.jsp#/download 需要重写为 https://blah.co.uk/Download/?Mode=doc

现在无论我似乎尝试什么,我总是将重写的 URL 设为 https://blah.co.uk/Download/?Mode=doc#/download

它似乎总是通过“#”和它之后的所有内容。

标签: nginx

解决方案


这是因为哈希部分或 URL(#/download在您的情况下)根本没有从 Web 服务器请求,所以 nginx 从未见过它,它不能成为 URL 重写的主题。您可以查看此问题以获取更多详细信息。URL 的哈希部分仅用于客户端处理,摆脱它的唯一方法,AFAIK,是使用一些客户端 JavaScript,例如:

if (window.history.pushState) {
    window.history.pushState('', '/', window.location.pathname + window.location.search);
} else {
    window.location.hash = '';
}

推荐阅读