我刚刚拿起G-WAN,我正试图弄清楚如何使索引使用特定的servlet,同时也有静态内容可用。
我将index.html
移动到index_old.html
,这样我就不会有任何冲突。
我将下面的代码放入处理程序中。
xbuf_t *read_xbuf = (xbuf_t*)get_env(argv, READ_XBUF);
xbuf_replfrto(read_xbuf, read_xbuf->ptr, read_xbuf->ptr + 16, "/", "/?hello");
重启gwan后,我看到了我想要的Hello, ANSI C!
。
然而,我注意到所有其他内容不再加载,甚至404页是不同的!
所以,我有了一个想法,这似乎是在做字符串替换,而不是精确匹配。
xbuf_t *read_xbuf = (xbuf_t*)get_env(argv, READ_XBUF);
xbuf_replfrto(read_xbuf, read_xbuf->ptr, read_xbuf->ptr + 16, "/", "/?");
现在,当点击/
时,我看到了404,/hello
,我再次看到了servlet。所以,这似乎不是我正在寻找的解决方案。
同样,我只想让/
命中我指定的特定servlet,并且所有其他请求都不受此规则的影响。
谢谢,
中似乎提出了类似的解决方案G-WAN处理程序重写解决方案
使用它,我派生了以下代码,不仅允许生成索引,还允许生成任何额外的查询字符串。char *szRequest = (char*)get_env(argv, REQUEST);
if(strncmp(szRequest, "GET / ", 6) == 0){
xbuf_t *read_xbuf = (xbuf_t*)get_env(argv, READ_XBUF);
xbuf_replfrto(read_xbuf, read_xbuf->ptr, read_xbuf->ptr + 16, "/", "/!hello");
}else if(strncmp(szRequest, "GET /?", 6) == 0){
xbuf_t *read_xbuf = (xbuf_t*)get_env(argv, READ_XBUF);
xbuf_replfrto(read_xbuf, read_xbuf->ptr, read_xbuf->ptr + 16, "/?", "/!hello&");
}
如上所示,我必须移动到!
以避免冲突。这意味着我必须在init()
函数中添加以下内容:
u8 *query_char = (u8*)get_env(argv, QUERY_CHAR);
*query_char = '!';
我能够访问/
和/?blah
没有问题,同时仍然能够访问像100.html
这样的文件,而没有得到servlet 404。
似乎任何其他类似的绑定到URL,而不阻塞目录的其余部分可以更容易地使用宏。