Question

J'ai une application d'entreprise écrite en JAVA avec JSF (utilisant RichFaces 3.3). Actuellement, mon URL ressemble à ceci:

http: //localhost/WebApplication/faces/folder1/page.jsp

La question est de savoir comment masquer mon URL pour que cela ressemble à ceci:

http: //localhost/folder1/page.jps

En gros, je souhaite masquer & "Application / faces / &";

.

Merci

Était-ce utile?

La solution

Pour réécrire les URL dans votre application, vous pouvez utiliser UrlRewrite . Toutefois, dans ce cas, il semble que vous souhaitiez supprimer le chemin de contexte de votre application Web. Dans ce cas, vous disposez de deux options:

  1. déployez votre application dans le chemin de contexte / (en quoi le serveur d'application est-il spécifique)
  2. exécutez Apache sur le port 80 et utilisez mod_proxy pour envoyer par proxy certaines adresses URL à votre serveur d'applications s'exécutant sur un port différent, à l'aide de la configuration suivante.

Config Apache:

<Proxy http://localhost:8080/*>
    Order Allow,Deny
    Allow From All
</Proxy>

ProxyPreserveHost On
ProxyPass / http://localhost:8080/WebApplication/
ProxyPassReverse / http://localhost:8080/WebApplication/

Autres conseils

Notez que le / faces / est dû au mappage dans web.xml. Il s’agit d’un mappage standard pour JSF, mais vous pouvez également utiliser le mappage d’extensions - c.-à-d. .faces à la fin de l’URL.

Par exemple, dans une application que j'ai ici, cela se trouve dans le fichier web.xml:

<servlet-mapping>
    <servlet-name>Persistent Faces Servlet</servlet-name>
    <url-pattern>*.faces</url-pattern>
</servlet-mapping>

Ceci utilise IceFaces, mais ce sera similaire pour vous avec RichFaces. Le vôtre ressemblera probablement à ceci: <url-pattern>/faces/*</url-pattern>. Si vous le changez pour avoir *.faces comme ci-dessus, votre URL de fin ressemblera à ceci:

http: //localhost/WebApplication/folder1/page.faces

Si vous l'utilisez en conjonction avec la réponse donnée par Peter Hilton à propos du déploiement en tant qu'application Web racine, votre URL de fin ressemblera à ceci:

http: //localhost/folder1/page.faces

Ce qui correspond presque exactement à ce que vous vouliez.

PrettyFaces vous permet de réécrire votre URL. Si vous préférez quelque chose de plus léger, étendez NavigationHandler et remplacez-le. handleNavigation, par exemple en appelant context.getExternalContext (). redirect ()

Oui. Nous avons conçu PrettyFaces exactement pour gérer cette situation:

PrettyFaces & # 8211; SEO, paramètres dynamiques, signets et navigation pour JSF / JSF2

Vous pouvez également modifier le nom du dossier de faces en jsp, par exemple, comme suit:

<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/jsp/*</url-pattern>
</servlet-mapping>
<session-config>
    <session-timeout>
        30
    </session-timeout>
</session-config>
<welcome-file-list>
   <welcome-file>jsp/index.jsp</welcome-file>
</welcome-file-list>

Et votre url ressemblera à:

http://localhost/WebApplication/jsp/folder1/page.jsp

et si vous déployez votre application sur le chemin du contexte / du serveur d'applications, elle ressemblera à:

http://localhost/jsp/folder1/page.jsp

il sera difficile maintenant de savoir que vous utilisez JSF pour les lecteurs ;-) mais un pirate informatique peut le découvrir en pointant son navigateur sur l'URL suivante: http://localhost/folder1/page.jsp

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top