Domanda

Ho un'applicazione enterprise scritta in JAVA con JSF (usando RichFaces 3.3). Attualmente il mio URL è simile al seguente:

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

La domanda è come posso mascherare il mio URL per renderlo così:

http: //localhost/folder1/page.jps

Fondamentalmente voglio nascondere " Applicazione / facce / "

Grazie

È stato utile?

Soluzione

Per riscrivere gli URL all'interno dell'applicazione è possibile utilizzare UrlRewrite . Tuttavia, in questo caso sembra che tu voglia rimuovere il percorso di contesto della tua applicazione web, nel qual caso hai due opzioni:

  1. distribuisci la tua applicazione nel percorso di contesto / (come è specifico del server delle applicazioni)
  2. esegui Apache sulla porta 80 e usa mod_proxy per delegare determinati URL al tuo server delle applicazioni in esecuzione su una porta diversa, usando una configurazione simile alla seguente.

Configurazione di Apache:

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

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

Altri suggerimenti

Nota che / faces / è dovuto alla mappatura in web.xml. questa è una mappatura standard per JSF, tuttavia è possibile utilizzare anche la mappatura delle estensioni, ovvero .faces alla fine dell'URL.

Ad esempio, in un'applicazione che ho qui si trova nel file web.xml:

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

Questo utilizza IceFaces, tuttavia sarà simile per te con RichFaces. Probabilmente il tuo sarà simile al seguente: <url-pattern>/faces/*</url-pattern>. Se lo cambi per avere *.faces come sopra, l'URL finale sarà simile al seguente:

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

Se lo usi insieme alla risposta che Peter Hilton ha dato sulla distribuzione come applicazione web di root, il tuo URL finale sarà simile a questo:

http: //localhost/folder1/page.faces

Che è quasi esattamente quello che volevi.

PrettyFaces ti consente di riscrivere il tuo URL. Se preferisci qualcosa di più leggero, estendi NavigationHandler e sostituisci handleNavigation, ad es. chiamando context.getExternalContext (). redirect ()

Sì. Abbiamo progettato PrettyFaces esattamente per gestire questa situazione:

PrettyFaces & # 8211; SEO, parametri dinamici, segnalibri e navigazione per JSF / JSF2

Puoi anche cambiare il nome della cartella da volti a jsp, ad esempio in questo modo:

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

E quindi il tuo URL apparirà come:

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

e se distribuisci la tua applicazione nel percorso di contesto / del server delle applicazioni apparirà come:

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

ora sarà difficile scoprire che usi JSF per i lamer ;-) ma un hacker può investigarlo indicando il suo browser all'URL in questo modo http://localhost/folder1/page.jsp

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top