【问题标题】:.shtml - how to redirect AND pass the URI.shtml - 如何重定向并传递 URI
【发布时间】:2014-03-14 15:45:52
【问题描述】:

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

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

【问题讨论】:

    标签: ssi shtml


    【解决方案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" -->
    

    有两种选择:

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

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

    【讨论】:

    • 谢谢。我没有看到通知告诉我这得到了答复。我很感激。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 2022-08-05
    相关资源
    最近更新 更多