1

在我的共享服务器上,我正在尝试创建一个自定义 404 页面。这个特定的主机使用 SHTML,我不能重写..

我可以显示uri:

<!--#echo var="REQUEST_URI" -->

我可以使 URI 成为变量的一部分:

<!--#set var="URI" value="404.php?xxx=$REQUEST_URI" -->

我可以重定向到我自己的 404.php 页面:

<!--#exec cgi="404.php" -->

但我似乎无法将 URI 变量的值放入重定向中。这些都不起作用:

<!--#exec cgi="404.php?xxx=$REQUEST_URI" -->

<!--#exec cgi="$URI" -->

<!--#exec cgi="URI" -->

有什么可行的想法吗?提前致谢。

4

1 回答 1

1

从有关元素的文档中exec

CGI 脚本被赋予来自客户端的原始请求的 PATH_INFO 和查询字符串 (QUERY_STRING);这些不能在 URL 路径中指定。除了标准 CGI 环境之外,脚本还可以使用包含变量。

...

应优先使用 include 虚拟元素而不是 exec cgi。特别是,如果您需要使用查询字符串向 CGI 程序传递额外的参数,这不能使用 exec cgi 完成,但可以使用 include virtual 完成,如下所示:

<!--#include virtual="/cgi-bin/example.cgi?argument=value" -->

有两种选择:

  • 404.php通过现有<!--#exec cgi元素使用脚本。它应该能够立即使用相关的 CGI 变量(例如$_SERVER['REQUEST_URI'])。
  • 更改为使用<!--#include virtual元素并传入所需的变量。

就个人而言,我会选择第一个选项。

于 2014-05-09T09:06:42.323 回答