如何在没有查询参数的情况下获取 SSI 变量 REQUEST_URI
How to get SSI variable REQUEST_URI without query parameters
我试图在没有查询参数的情况下获取 REQUEST_URI 的路径名部分。我需要在原始 SSI 中执行此操作,没有任何 PHP 或任何东西。
如果我做类似 <!--#echo var="REQUEST_URI" -->
的事情,那将输出路径名和查询参数,所以如果浏览器 URL 显示 http://example.com/foo.html?bar,那将 return /foo.html?bar
。但我只需要 return /foo.html
。有没有办法直接在 echo
语句中执行此操作?
注意:它只需要使用请求的uri。服务器上的实际文件路径非常不同,我无法显示这些。
您可以尝试使用 DOCUMENT_URI
变量:
<!--#echo var="DOCUMENT_URI" -->
SCRIPT_NAME
似乎也有效:
<!--#echo var="SCRIPT_NAME" -->
我周围没有 运行 nginx
和 SSI
,所以我只是在猜测。
但也许你可以尝试使用正则表达式来提取你想要的东西。
也许是这样的:
<!--# if expr="$REQUEST_URI = /(.+)\?.*/" -->
<!--# echo var="1" -->
<!--# endif -->
我不确定 ?
之前的 \
。
这段代码对我有用:
<!--#if expr="$REQUEST_URI = /([^?]+)\?.*/" -->
<!--#set var="URL_WITHOUT_QUERY_STRING" value="" -->
<!--#echo var='URL_WITHOUT_QUERY_STRING' -->
<!--#endif -->
我试图在没有查询参数的情况下获取 REQUEST_URI 的路径名部分。我需要在原始 SSI 中执行此操作,没有任何 PHP 或任何东西。
如果我做类似 <!--#echo var="REQUEST_URI" -->
的事情,那将输出路径名和查询参数,所以如果浏览器 URL 显示 http://example.com/foo.html?bar,那将 return /foo.html?bar
。但我只需要 return /foo.html
。有没有办法直接在 echo
语句中执行此操作?
注意:它只需要使用请求的uri。服务器上的实际文件路径非常不同,我无法显示这些。
您可以尝试使用 DOCUMENT_URI
变量:
<!--#echo var="DOCUMENT_URI" -->
SCRIPT_NAME
似乎也有效:
<!--#echo var="SCRIPT_NAME" -->
我周围没有 运行 nginx
和 SSI
,所以我只是在猜测。
但也许你可以尝试使用正则表达式来提取你想要的东西。
也许是这样的:
<!--# if expr="$REQUEST_URI = /(.+)\?.*/" -->
<!--# echo var="1" -->
<!--# endif -->
我不确定 ?
之前的 \
。
这段代码对我有用:
<!--#if expr="$REQUEST_URI = /([^?]+)\?.*/" -->
<!--#set var="URL_WITHOUT_QUERY_STRING" value="" -->
<!--#echo var='URL_WITHOUT_QUERY_STRING' -->
<!--#endif -->