UrlRewriteFilter со Glassfish - PullRequest
       14

UrlRewriteFilter со Glassfish

1 голос
/ 10 июля 2010

Как я могу интегрировать перезапись URL на моем сервере Glassfish v3?

Причина, по которой я хочу это знать, заключается в том, что я развертываю приложение PHP на своем сервере Glassfish с помощью Quercus.

Но Quercus полагается на mod_rewrite на сервере Apache для обеспечения перезаписи URL, а в Glassfish это недоступно.

Ответы [ 2 ]

1 голос
/ 10 июля 2010

Ну, у вас есть два варианта:

  • либо передний экземпляр GlassFish с Apache, и используйте mod_rewrite
  • или используйте Tuckey's Url Rewrite Filter

Я полагаю, что первый вариант не подходит (иначе вы бы не разместили этот вопрос). Что касается последующего, вы можете адаптировать решение, приведенное в Drupal на Glassfish, с чистыми URL, используя Url Rewrite Filter . По сути, вам придется:

  • Возьмите войну Куеркуса и распакуйте ее
  • Загрузите фильтр и распакуйте его внутри Quercus (это поместит банку фильтра внутрь WEB-INF/lib и urlrewrite.xml в WEB-INF)
  • Объявите фильтр в web.xml (см. Инструкцию)
  • "Перенести" ваши правила перезаписи в файл urlrewrite.xml
  • переупаковать и развернуть войну (или развернуть ее как взорванный архив)
0 голосов
/ 02 сентября 2012

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

...