這裏是我的腳本:G-WAN處理程序重寫解決方案
#include "gwan.h" // G-WAN exported functions
#include <string.h> // strstr()
int init(int argc, char *argv[])
{
u32 *states = (u32*)get_env(argv, US_HANDLER_STATES);
*states = 1 << HDL_AFTER_READ;
return 0;
}
void clean(int argc, char *argv[])
{}
int main(int argc, char *argv[])
{
if((long)argv[0] == HDL_AFTER_READ)
{
xbuf_t *read_xbuf = (xbuf_t*)get_env(argv, READ_XBUF);
if(strstr(read_xbuf->ptr, "GET/HTTP/1.1"))
{
xbuf_repl(read_xbuf, "GET/HTTP/1.1", "GET /?index HTTP/1.1");
}
else
{
if(strstr(read_xbuf->ptr, ".c HTTP/1.1"))
{
int *pHTTP_status = (int*)get_env(argv, HTTP_CODE);
if(pHTTP_status)
*pHTTP_status = 404;
return 255;
}
xbuf_repl(read_xbuf, "GET /", "GET /?");
}
}
return(255);
}
你可能明白,我想重定向網頁的動態文件「的hello.c」。 我也將每個請求重定向到動態目錄(不必使用字符「?」),同時防止在URL中使用擴展名「.c」。
該腳本部分工作,但顯然會導致內存分配問題。 你有任何解決方案建議?
此腳本不適用於流水線請求,因爲您沒有檢查該情況。另外,它忽略HTTP 1.0。請參閱下文,瞭解更簡單,更有效的解決方案。 – Gil 2013-03-14 07:14:25
我同意你的意見。我的解決方案不是很好,但我不知道該如何解決我的問題......主要是以最好的方式將我的主頁(mydomain.com/)重定向到一個動態文件。 – 2013-03-15 14:31:56