2010-07-09 4 views
1

Как интегрировать переписывание URL-адресов на моем сервере Glassfish v3?UrlRewriteFilter with Glassfish

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

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

+0

возможный дубликат URLS уборку в х годах [Rewrite URL на Glassfish с Quercus' PHP] (http://stackoverflow.com/questions/3215723/rewrite-url-on-glassfish-with-quercus-php) –

ответ

1

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

  • либо спереди ваш GlassFish экземпляра с Apache и использовать mod_rewrite
  • или использовать Таки-х Url Rewrite Filter

Я предполагаю, что бывший не вариант (или вы не ставили бы этот вопрос). Что касается более позднего, вы можете адаптировать решение, данное в Drupal on Glassfish with clean urls using Url Rewrite Filter. В принципе, вы должны будете:

  • Получить войну Quercus и распаковать его
  • Скачать the filter и распаковать его в Quercus (это поставит фильтр банку внутри WEB-INF/lib и urlrewrite.xml под WEB-INF)
  • Объявить фильтр в web.xml (см инструкции)
  • своих правил перезаписи «порт» в файл urlrewrite.xml
  • упаковать и развернуть войну (или развернуть его как взорванный Archi ve)
0

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

Пополните свой Друпал приложение, а затем включить

Смежные вопросы