2010-07-09 6 views
1

Comment puis-je intégrer la réécriture d'URL sur mon serveur Glassfish v3?UrlRewriteFilter avec Glassfish

La raison pour laquelle je veux savoir ceci est que je déploie une application PHP dans mon serveur Glassfish en utilisant Quercus. Quercus s'appuie sur mod_rewrite dans le serveur Apache pour fournir une réécriture d'URL, ce qui n'est pas disponible dans Glassfish.

+0

de URLS propre possible [URL Rewrite sur Glassfish avec Quercus' PHP] (http://stackoverflow.com/questions/3215723/rewrite-url-on-glassfish-with-quercus-php) –

Répondre

1

Eh bien, vous avez deux options:

  • soit devant votre instance GlassFish avec Apache et utiliser mod_rewrite
  • ou utilisez Tuckey de Url Rewrite Filter

Je suppose que le premier n'est pas une option (ou vous ne poseriez pas cette question). En ce qui concerne le plus tard, vous pouvez adapter la solution donnée en Drupal on Glassfish with clean urls using Url Rewrite Filter. En gros, vous devrez:

  • Obtenez la guerre de Quercus et décompressez
  • Télécharger the filter et décompressez l'intérieur Quercus (cela mettra le pot de filtre à l'intérieur WEB-INF/lib et urlrewrite.xml sous WEB-INF)
  • Déclarer la filtrer dans le web.xml (voir l'instruction)
  • « Port » vos règles de réécriture dans le fichier urlrewrite.xml
  • reconditionner et déployer la guerre (ou le déployer comme un archi éclatées ve)
0

J'ai cherché la réponse à ceci pour quelques semaines. Suivez les instructions suivantes pour JBoss: http://tapomay.blogspot.com/2011/11/clean-urls-with-drupal-urlrewritefilter.html

Il lie à un article où l'on avait fait pour Tomcat: http://www.brianshowalter.com/blog/running_drupal_on_quercus

En un mot, vous voulez réécrire l'URL uniquement si le fichier demandé ou répertoire ne pas exister sur le système. C'est pourquoi UrlRewriteFilter ne suffit pas. Vous devez ajouter un filtre de classe à UrlRewriteFilter pour vérifier cela.

Les instructions auxquelles j'ai lié utilisent une ancienne version de UrlRewriteFilter (3.2.0), cela fonctionne probablement aussi bien avec la version plus récente (je l'ai fait avec 3.2.0).

Vous utiliserez que conjointement avec un filtre de classe (il y a un dépôt de projet google pour cela, grâce à l'auteur de l'article lié à https://code.google.com/p/drupalrewritefilter/)

Les instructions indiquent pour ajouter les fichiers à Eclipse, mais j'ai utilisé Netbeans (il suffit de démarrer un nouveau projet avec des sources existantes).

Vous devez ajouter le fichier servlet.api.jar (sur votre système, si vous avez installé J2EE) et le fichier UrleRewriteFilter.jar que vous utilisez pour le chemin de classe pour la génération.

Placez le fichier résultant drupalrewritefilter.jar et le fichier UrlRewriteFilter.jar que vous utilisez dans WEB-INF/lib

Votre WEB-INF/web.xml devrait avoir cette directive filtre:

<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> 

Utilisez ce lieu de celui du site pour UrlRewriteFilter dit utiliser.

REMARQUE: L'installation de Quercus contient au début une balise DOCTYPE pour l'API Servlet 2.2 ou 2.3. Mais la balise <filter> est dans l'API Servlet 2.4 ou supérieure. Votre application fera une erreur à moins que vous ne liez à une nouvelle DTD API Server ou (et c'est ce que j'ai fait) il suffit de supprimer la balise DOCTYPE tous ensemble.

Ensuite, vous devriez avoir un WEB-INF/urlwrite.xml avec:

<?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> 

Recharger votre application drupal, puis allez activer double