0

不久前我拿起了 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,并且所有其他请求都不受这条规则的影响。

谢谢,

4

1 回答 1

0

似乎在 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 的绑定,而不是阻止目录的其余部分,都可以通过宏变得更容易。

于 2013-04-18T02:52:29.147 回答