Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883

    [JAVA] htaccess RewriteRule e servlet

    ho inserito questa regola nel mio file htaccess

    RewriteEngine on
    RewriteRule /page$ /UrlServlet?page=$1


    dopodichè chiamo il mio sito scritto in java con questo url

    https://www.miosito.it/page21

    ma la richiesta non finisce a
    UrlServlet
    mi compare una pagina con scritto

    Etat HTTP 404 - /page21


    type Rapport d''état
    message /page21
    description La ressource demandée n''est pas disponible.

    Apache Tomcat/7.0.82




    sbaglio la regola che scrivo in htaccess?
    ho provato a scrivere anche le regole
    RewriteRule ^page$ https://www.miosito.it/UrlServlet?page=$1
    RewriteRule /page$ https://www.miosito.it/UrlServlet?page=$1

    ma ottengo sempre la solita pagina di errore
    Ultima modifica di abcd1000; 27-03-2020 a 14:34

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da abcd1000 Visualizza il messaggio
    ho inserito questa regola nel mio file htaccess

    RewriteEngine on
    RewriteRule /page$ /UrlServlet?page=$1

    sbaglio la regola che scrivo in htaccess?
    Direi proprio di sì.
    Non me ne intendo granché del .htaccess ma si tratta di espressioni regolari, e il $ descrive la fine del url, NON "lì c'è un numero".

    Quindi semmai qualcosa del tipo (prova, io non ho modo di provare):

    RewriteRule /page(\d+)$ /UrlServlet?page=$1

    \d+ vuol dire "una o più cifre decimali" e ( ) definisce il gruppo 1 che poi si referenzia nel replace a destra con $1

    Quindi /page123 dovrebbe diventare /UrlServlet?page=123

    Tutto qui. Prova, non sono sicuro al 100% ma quasi ...

    P.S. ovviamente se si chiede /pageABC non funziona ... il \d+ fa anche da "filtro" in questo senso, solo numeri.
    Ultima modifica di andbin; 27-03-2020 a 15:27
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Direi proprio di sì.
    Non me ne intendo granché del .htaccess ma si tratta di espressioni regolari, e il $ descrive la fine del url, NON "lì c'è un numero".

    Quindi semmai qualcosa del tipo (prova, io non ho modo di provare):

    RewriteRule /page(\d+)$ /UrlServlet?page=$1

    \d+ vuol dire "una o più cifre decimali" e ( ) definisce il gruppo 1 che poi si referenzia nel replace a destra con $1

    Quindi /page123 dovrebbe diventare /UrlServlet?page=123

    Tutto qui. Prova, non sono sicuro al 100% ma quasi ...

    P.S. ovviamente se si chiede /pageABC non funziona ... il \d+ fa anche da "filtro" in questo senso, solo numeri.
    Sei stato molto chiario, grazie
    nel file access ho messo questa regola

    RewriteRule /page(\d+)$ /UrlServlet?page=$1

    ed ho chiamato il mio sito con
    https://www.miosito.it/page1058

    ma continua a darmi la stessa pagina di errore che puoi vedere al link
    https://gyazo.com/f7dff344aa8029f3542546f878510d45

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da abcd1000 Visualizza il messaggio
    ma continua a darmi la stessa pagina di errore che puoi vedere al link
    https://gyazo.com/f7dff344aa8029f3542546f878510d45
    Domanda banale ... ma il modulo mod_rewrite di Apache è attivato? E c'è anche la configurazione per abilitare la lettura dei .htaccess ?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    ok ho capito il problema
    il file htaccess funziona con apache ed i siti in php
    io ho un sito in java sotto tomcat, quindi devo inserire le regole da qualche altra parte

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da abcd1000 Visualizza il messaggio
    ok ho capito il problema
    il file htaccess funziona con apache ed i siti in php
    io ho un sito in java sotto tomcat, quindi devo inserire le regole da qualche altra parte
    Un conto è avere Apache HTTPD che "gira" le richieste ad Apache Tomcat (non è così inusuale ... molti fanno così).
    Un altro conto è avere solo Apache Tomcat. In questo caso ovviamente .htaccess, mod_rewrite ecc... di per sé non c'entrano nulla.

    Con Tomcat, o usi nella webapp una libreria di url-rewrite (come la Tuckey, https://tuckey.org/urlrewrite/ ) che si interpone come "Filter" a tutte le request ma devi avere pieno "controllo" della webapp o altrimenti .... serve altro.

    So che in Tomcat si può configurare un RewriteValve ma non ti so dire nulla di più, mai visto mai usato. Cerca info.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    ok, sto usandola libreria tucky e devo implementare la regola che trasforma questo url che digita l'utente nel browser


    http://miosito.com/prodotti/113/ita


    in questo
    http://miosito.com/mostra.php?sezion...d=113&lang=ita


    ed ho scritto la seguente regola


    <rule>
    <from>^/(.*)/(.*)/(.*).html$</from>
    <to type="forward">
    /UrlServlet?sezione=$1&amp;id=$2&amp;lang=$3
    </to>
    </rule>


    invece se uno volesse questo tipo di url
    http://miosito.it/page_1058_ita.html


    bisogna scrivere quesa regola


    <rule>
    <from>^/(.*)_(.*)_(.*).html$</from>
    <to type="forward">
    /UrlServlet?page=$1&amp;productId=$2&amp;language=$ 3
    </to>
    </rule>




    quindi il file urlwriter.xml diventa


    <?xml version="1.0" encoding="utf-8"?>


    <!DOCTYPE urlrewrite
    PUBLIC "-//tuckey.org//DTD UrlRewrite 2.6//EN"
    "http://tuckey.org/res/dtds/urlrewrite2.6.dtd">


    <urlrewrite>


    <rule>
    <from>^/(.*)_(.*)_(.*).html$</from>
    <to type="forward">
    /UrlServlet?page=$1&amp;productId=$2&amp;language=$ 3
    </to>
    </rule>


    </urlrewrite>




    ho scritto questo post perchè magari può essere utile a qualcuno

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.