Я искал ответ на это пару недель.
Следуйте этим инструкциям для JBoss:
http://tapomay.blogspot.com/2011/11/clean-urls-with-drupal-urlrewritefilter.html
Он ссылается на статью, где кто-то сделал это для Tomcat: http://www.brianshowalter.com/blog/running_drupal_on_quercus
Короче говоря, вы хотите переписать только URL, если запрошенный файл или каталог не существует в системе. Вот почему просто UrlRewriteFilter недостаточно. Вы должны добавить фильтр классов к UrlRewriteFilter, чтобы проверить это.
Инструкции, на которые я ссылался, используют более старую версию UrlRewriteFilter (3.2.0), вероятно, она работает так же хорошо с более новой версией (я сделал это с 3.2.0).
Вы будете использовать это вместе с фильтром классов (для этого, благодаря автору связанной статьи, есть репозиторий проекта Google на https://code.google.com/p/drupalrewritefilter/)
В инструкциях говорится, чтобы добавить файлы в Eclipse, но я использовал Netbeans (просто запустите новый проект с существующими источниками).
Вам потребуется добавить servlet.api.jar (где-то в вашей системе, если у вас установлен J2EE) и файл UrleRewriteFilter.jar, который вы используете, в путь к классам для сборки.
Поместите полученный файл drupalrewritefilter.jar
и файл UrlRewriteFilter.jar
, который вы используете, в WEB-INF / lib
Ваш WEB-INF / web.xml должен иметь эту директиву фильтра:
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
<init-param>
<param-name>logLevel</param-name>
<param-value>TRACE</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Используйте это вместо того, которое веб-сайт для UrlRewriteFilter говорит использовать.
ПРИМЕЧАНИЕ: Установка Quercus содержит тег DOCTYPE в начале для Servlet API 2.2 или 2.3. Но тег <filter>
есть в Servlet API 2.4 или выше. В вашем приложении произойдет ошибка, если вы не будете либо ссылаться на новый DTD Server API, либо (и это то, что я сделал) просто удалите тег DOCTYPE все вместе.
Тогда у вас должен быть WEB-INF / urlwrite.xml с:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN"
"http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd">
<urlrewrite>
<class-rule class="com.brianshowalter.drupalrewrite.DrupalRule" />
</urlrewrite>
Перезагрузите приложение drupal, а затем включите чистые URL-адреса