接上文. 我通过 openwrt 自带的 uhttpd 经过配置,可以令客户在浏览器中执行 lua 脚本.
那么我就想,让这个lua脚本在客户访问 url根目录时才执行,再进入子目录的时候只访问静态页面,该怎么办呢?
用过其它的 web 服务器的朋友知道,有个很实用的功能, 就是自定义多个index文件.
openwrt默认提供的配置文件中所提供的线索比较有限,我查看了多个openwrt的默认配置文件都没有什么结果.
uhttpd是openwrt开发者从头编写的 Web 服务器, 难道这些大牛连这么实用的功能都没能添加进去吗?
一阵乱搜,还真被我找到了.
见: https://wiki.openwrt.org/doc/uci/uhttpd
本人英文不怎么样,但硬着头皮还是能看懂一些的.
与默认主页文件有关的有两个配置选项.
index_file
|
file name | no |
index.html, index.htm, default.html, default.htm
|
Index file to use for directories, e.g. add index.php when using php |
index_page
|
file name | no |
index.html
|
Index file to use for directories, e.g. add index.php when using php (last, 20131015, replace index_file ?) should be noted: list index_page "index.html index.htm default.html default.htm index.php" |
从说明来看, index_page 可能是用来代替 index_file的.
直接编辑 /etc/config/uhttpd
在[]下添加一句:
list index_page 'index.lua index.html'
或者可以:
list index_page 'index.lua`
list index_page 'index.html'
这样,用户访问目录时,uhttpd服务就会尝试在目录下查找 index.lua index.html了.
这里要鄙视一下 IE浏览器, 可恶的缓存文件经常会来捣乱, 直接访问,F5,CTRL+F5 可能会出现多种不一样的结果.
换用chrome之类的就好多了,不过,调试时我用wget 会更可靠些:
wget -q -O - "http://192.168.1.1"
最后,为了安全,我再上一句:
option no_dirlists '1'
可以防止用户访问列出目录下所有文件.