У меня есть вопрос, для которого, я уверен, должно быть простое решение. Я пишу небольшое приложение GWT, где я хочу добиться этого:
www.domain.com : должна отображаться страница приветствия
www.domain.com / xyz : должен обслуживать страницу xyz, где xyz просто
ключ для элемента в базе данных. Если есть
элемент, связанный с ключом xyz, я загружу его и покажу страницу, в противном случае я покажу
404 ошибка страницы.
Я пытался соответствующим образом изменить файл web.xml, но просто не мог
сделай так, чтоб это работало. Я мог бы заставить его работать с url-pattern , если рассматриваемый ключ находится после другого /, например: www.domain.com/search/xyz. Тем не мение,
Я хотел бы иметь ключ xyz непосредственно после корня / (http://www.domain.com/xyz).
Что-то вроде
<servlet-mapping>
<servlet-name>main</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
не работает, так как я не знаю, как обратиться к главной странице
index.html (поскольку это не настоящий сервлет), который затем загрузит мой
основной модуль GWT.
Я мог бы заставить его работать с плохой работой (см. Ниже): перенаправление
404 исключение для index.html и затем поиск в главном
точка входа, но я уверен, что это не лучшая практика, в том числе и для SEO
цели.
Может кто-нибудь подсказать, как настроить web.xml с GWT для
моя цель?
Большое спасибо.
Майк
Обход через 404:
web.xml:
<web-app>
<error-page>
<exception-type>404</exception-type>
<location>/index.html</location>
</error-page>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
index.html -> Главная точка входа -> onModuleLoad ():
String path = Window.Location.getPath();
if (path == null || path.length() == 0 || path.equalsIgnoreCase("/")
|| path.equalsIgnoreCase("/index.html")) {
... // load main page
} else {
lookup(path.substring(1)); // that's key xyz