在lighttpd

时间:2017-02-09 20:42:41

标签: shell cgi sh lighttpd

我的配置文件中有以下部分:

cgi.assign = ( ".sh" => "" )

$HTTP["url"] =~ "^/urlpath/" {
  $HTTP["querystring"] =~ "cams=on" {
    cgi.assign = ( "" => "/scriptpath/CamsOn" )
  }
  $HTTP["querystring"] =~ "cams=off" {
    cgi.assign = ( "" => "/scriptpath/CamsOff" )
  }
  url.redirect = ( "^/urlpath/" => "http://somewebsite" )
}

我已加载cgi模块:

server.modules              = (
                                "mod_redirect",
                                "mod_access",
                                "mod_cgi",
                                "mod_accesslog" )

现在" CamsOn"和" CamsOff"是shebanged shell脚本。说实话,我以前做过这个并且让它工作但我的服务器崩溃了,我丢失了我的配置。出于某种原因,我不能为我的生活找到如何让它发挥作用。我进行重定向,所以我不必实际创建" urlpath"页。重定向在$ HTTP [" url"]部分内正常工作,我甚至通过在内部嵌套重定向来测试查询字符串部分,只需将其转到google.com; urlpath /?cams = on相应地发送给谷歌。

我做错了什么?

更新

我是用

让它工作的
$HTTP["url"] =~ "^/urlpath/" {
  $HTTP["querystring"] =~ "cams=on" {
    cgi.assign = ( "" => "/scriptpath/CamsOn" )
  }
  $HTTP["querystring"] =~ "cams=off" {
    cgi.assign = ( "" => "/scriptpath/CamsOff" )
  }
}

我认为重定向首先被解析,所以当地址发生变化时,它不再适合URL和查询字符串比较。我可以改变吗?我们的想法是使urlpath动态化并在conf文件中动态更新。这就是我将重定向发送到另一个地址的原因。这样我也不需要进行html编辑或创建其他文件夹。

1 个答案:

答案 0 :(得分:0)

  

我做错了什么?

a)没有备份

b)没有进行备份

c)没有进行备份

d)没有查看自己的stackoverflow帖子历史记录

请参阅Can't figure out how to receive http requests using lighttpd

如果要减少配置文件中编辑的位置数,可以在lighttpd.conf中为变量赋值,并使用lighttpd.conf中的变量。请参阅var.* https://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_Configuration var.camsurlpath = "/urlpath/" $HTTP["url"] =~ "^" + var.camsurlpath { ... }