我正在尝试获取REQUEST_URI的路径名部分,而不使用查询参数。我需要在原始SSI中执行此操作,不需要任何PHP或任何东西。
如果我执行类似<!--#echo var="REQUEST_URI" -->
的操作,则会输出路径名和查询参数,因此,如果浏览器网址显示http://example.com/foo.html?bar,则会返回/foo.html?bar
。但我只需要返回/foo.html
。有没有办法在echo
语句中直接执行此操作?
注意:它只需要使用请求的uri。服务器上的实际文件路径非常不同,我无法显示它们。
答案 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 -->