Индекс как сервлет, остальные как статический контент

Я поднял G-WAN только недавно, и я пытаюсь выяснить, как заставить индекс использовать определенный сервлет, в то же время имея статический контент.

я переехал 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 Я снова увидел сервлет. Таким образом, это не то решение, которое я ищу.

Опять хочу / ударить по конкретному сервлету моего назначения, и чтобы все другие запросы не были выполнены этим одним правилом.

Спасибо,

1 ответ

Похоже, что подобное решение представлено в решении переписывания обработчиков 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 без получения сервлета 404.

Кажется, что любые другие подобные привязки к URL, не блокируя остальную часть каталога, можно упростить с помощью макроса.

Другие вопросы по тегам