.shtml - 如何重定向和传递URI

时间:2014-03-14 15:45:52

标签: ssi shtml

在我的共享服务器上,我正在尝试创建自定义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" -->

任何可行的想法?提前谢谢。

1 个答案:

答案 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元素并传入所需的变量。

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