Я искал ответ на этот вопрос в течение нескольких недель. Следуйте этим инструкциям для 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 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-адреса.
person
Tim Hawes
schedule
02.09.2012