如何在没有查询参数的情况下获取SSI变量REQUEST_URI

时间:2017-01-30 17:09:24

标签: regex ssi

我正在尝试获取REQUEST_URI的路径名部分,而不使用查询参数。我需要在原始SSI中执行此操作,不需要任何PHP或任何东西。

如果我执行类似<!--#echo var="REQUEST_URI" -->的操作,则会输出路径名和查询参数,因此,如果浏览器网址显示http://example.com/foo.html?bar,则会返回/foo.html?bar。但我只需要返回/foo.html。有没有办法在echo语句中直接执行此操作?

注意:它只需要使用请求的uri。服务器上的实际文件路径非常不同,我无法显示它们。

3 个答案:

答案 0 :(得分:3)

我周围没有nginx SSI,所以我只想猜测一下。 但也许你可以尝试使用正则表达式来提取你想要的东西。 也许是这样的:

<!--# if expr="$REQUEST_URI = /(.+)\?.*/" -->
    <!--# echo var="1" -->
<!--# endif -->

我不确定\之前的?

答案 1 :(得分:1)

您可以尝试使用DOCUMENT_URI变量:

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

SCRIPT_NAME似乎也有效:

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

答案 2 :(得分:1)

此代码适用于我:

<!--#if expr="$REQUEST_URI = /([^?]+)\?.*/" -->
    <!--#set var="URL_WITHOUT_QUERY_STRING" value="$1" -->
    <!--#echo var='URL_WITHOUT_QUERY_STRING' -->
<!--#endif -->