我前一段时间拿起了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,以及所有其他请求不受此规则影响。
谢谢,
答案 0 :(得分:0)
似乎提出了类似的解决方案 G-WAN handler rewriting solution
使用它,我派生了以下代码,不仅允许生成索引,还允许生成任何其他查询字符串。
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
,同时仍然可以在不获取servlet 404的情况下访问100.html
之类的文件。
看起来像任何其他类似的绑定到URL而不阻止目录的其余部分可以通过宏更容易。