在我的共享服务器上,我正在尝试创建自定义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" -->
任何可行的想法?提前谢谢。
答案 0 :(得分:1)
来自documentation on the exec
element:
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
元素并传入所需的变量。就个人而言,我选择第一个选项。