静态网站上的临时重定向(302、307),经常更新

静态网站上的临时重定向(302、307),经常更新

可选背景(避免 XY 问题):我正在开发一个静态网站,其中包含类似 的 URL www.example.com/książka/。这些 URL 的问题在于,当您共享它们/粘贴到 IM 程序等时,变音字符会扩展为%<hex>并变得不可读:www.example.com/ksi%C4%85%C5%BCka/。因此,我正在考虑以下内容:

  • 将页面的规范 URL 设置为www.example.com/ksiazka/(“ąż”替换为“az”)
  • 返回临时重定向(HTTP 302 或 307)到www.example.com/książka/

不起作用的:

自动地址重写。原因:我们不是从“ąż”转到“az”,而是从“az”转到“ąż”或者可能是“ąz”或“aż”或“áz”,或者许多其他可能性之一。重定向必须在页面生成期间生成,此时我们知道现有页面的完整列表,因此我们知道“ksiazka”应该重定向到“książka”而不是“książką”。

我需要为每个页面配置 1 个 HTTP 重定向。每次上传新文章时,我都需要一个新的 HTTP 重定向。

编辑 NGINX 配置需要 root 访问权限,而我正在以普通用户的权限部署网站。在 Apache 下,您可以在 中添加一些指令.htaccess,但这会对性能造成影响,并且不适用于 NGINX。

除此之外,我可以创建一个包含文件/etc/nginx/sites-available/mysite来提取内容/home/myuser/mysite/_redirects。这样服务器就会读取由普通用户控制的文件。缺点是,它会让普通用户访问所有 NGINX 配置选项,而我只需要设置重定向。

为了解决这个问题,我也许可以编写一个自动化程序,读取用户上传的文件,其中只包含重定向所需的信息。类似于_redirectsNetlify 中的文件。但这感觉……不对劲。太定制了。

回顾一下:

  • 静态站点
  • 需要 HTTP 302 或 HTTP 307
  • /etc/nginx频繁更新(无法手动编辑)
  • 以非特权系统用户身份上传的文件
  • 不要给予该用户过多的 Web 服务器控制权

在 NGINX 上执行此操作的好方法是什么?

相关内容