Nginx 重写规则以用下划线替换查询字符串问号

Arp*_*lan 16 nginx

为了将整个网站镜像为静态 HTML,

我想将 URL 转换http://example.com/script.php?t=12http://example.com/script.php_t=12.

通知?中的 URL 正在被转换为_.

这将允许 nginx 或 apache 从磁盘提供这些文件作为我们获取和保存的原始 HTML——wget每个 URL 一个文件——而不是作为 PHP 文件。

是否可以通过 Nginx URL 重写来实现?

Mat*_*yer 15

我使用 try_files 完成了这项工作:

location / {
    try_files "${uri}_${args}" 404.html;
}
Run Code Online (Sandbox Code Playgroud)

这将尝试在磁盘上查找以您提供的模式命名的文件,其中包含“_”而不是“?”。

进一步的配置取决于您如何保存静态文件,如图像或样式表。您可以添加一个后备尝试在没有查询字符串形式的磁盘的情况下读取它们,如下所示:

location / {
    try_files "${uri}_${args}" $uri 404.html;
}
Run Code Online (Sandbox Code Playgroud)