我必须使用SSI获取URL和参数(仅适用于SSI),但我找不到任何解决方案。使用SSI获取URL和参数
例如:http://www.test.com/abc.html?data=something
而且我一定要得到的参数“数据”的价值。
我必须使用SSI获取URL和参数(仅适用于SSI),但我找不到任何解决方案。使用SSI获取URL和参数
例如:http://www.test.com/abc.html?data=something
而且我一定要得到的参数“数据”的价值。
<!-- set default value for SSI variable "data" -->
<!--#set var="data" value="" -->
<!-- get "data" value from URL -->
<!--#if expr="$QUERY_STRING = /data=([a-zA-Z0-9]+)/" -->
<!--#set var="data" value="$1" -->
<!--#endif -->
<!-- print the "data" value -->
<!--#echo var="data" -->
老问题我知道,但我只是在自己做一些SSI的时候碰到它。我相信你现在已经解决了你的问题,但是如果这对你没有帮助,也许它会是别人。我假设服务器是Apache。 (如果没有,那么我想这是行不通的!)
首先免责声明!我绝不是apache,sed或正则表达式的主人,所以我相信随后可以改进,但这可能是一个开始。它只是打印相对于网站底部和数据查询参数的页面。
<!--#echo var="DOCUMENT_URI" -->
<!--#exec cmd="echo '$QUERY_STRING' | sed -n 's/\([^&]*&\)*data=\([^&]*\).*/\2/p'" -->
我发现Apache的环境变量here: http://www.zytrax.com/tech/web/env_var.htm的列表,并找出你可以用这个东西做什么,一旦你已经检索到它look here: http://httpd.apache.org/docs/2.0/howto/ssi.html。
编辑当没有找到数据属性时,使它不会打印整个字符串。
我会将'/ data'改为'/ \ bdata'('\ b'是一个字的边界)以避免匹配像'iamnotdata'这样的变量。 – Blazemonger 2013-08-29 14:27:02
'/ \\ bdata'为我工作 – alekstrust 2015-02-08 01:49:38