• User Attivo

    Modrewrite, escludere una directory

    Salve a tutti! 😄

    vengo al dunque:

    Questa prima stringa mi funziona perfettamente:

     RewriteRule ^(.*?)/([0-9]*)-(.*).htm$ index.php?id=$2
    ```e mi permette di sostituire indirizzi del tipo
    
    [www.mioindirizzo.com/nome-qualsiasi-categoria/13-titolo-pagina.htm](http://www.mioindirizzo.com/nome-qualsiasi-categoria/13-titolo-pagina.htm)
    
    con
    
    [www.mioindirizzo.com/index.php?id=13](http://www.mioindirizzo.com/index.php?id=13)
    
    fin qui tutto regolare:
    
    ma se volessi processare diversamente tutti gli indirizzi che puntano alla sottocartella admin?
    
    ovvero una cosa tipo:
    
    [www.mioindirizzo.com/admin/nome-qualsiasi-categoria/13-titolo-pagina.htm](http://www.mioindirizzo.com/admin/nome-qualsiasi-categoria/13-titolo-pagina.htm)
    
    in [www.mioindirizzo.com/admin/index.php?id=13](http://www.mioindirizzo.com/admin/index.php?id=13)
    
    scriverei così giusto?
     
    

    RewriteRule ^admin/(.?)([0-9])-(.*).htm$ admin/index.php?id=$2

    
    
    inoltre mi chiedo:
    a) se queste 2 istruzioni (una volta definite) possano mai andare in conflitto.
    
    b) se esiste una regexp che accorpi entrambe le istruzioni in un unica stringa.
    
    grazie di essere arrivati fin qui :fumato:

  • User

    La prima ricalca la struttura che avevi in mente tu:

    (.[^/])/([0-9])-(.[^.]*).htm

    e la seconda parte era giusta

    c'era un punto interrogativo di troppo che non compariva nella url statica e erano saltate le slash

    comunque per quello che devi fare tu secondo me va bene anche

    admin/./([0-9])-.[^.]*.htm

    assumendo che tu abbia sempre una struttura di url standard:
    admin/nome-cartella/idnumerico-nomepagina.htm

    le tonde ti servono per salvare la stringa che matchi con l'espressione regolare: se ti serve solo il parametro numerico tanto vale usarle solo per beccare quello.

    Bai


  • User Attivo

    @DuccioG said:

    La prima ricalca la struttura che avevi in mente tu:

    ...le tonde ti servono per salvare la stringa che matchi con l'espressione regolare: se ti serve solo il parametro numerico tanto vale usarle solo per beccare quello.

    Bai

    Grazie, funziona tutto alla perfezione :fumato:

    giusto per curiosità, come mai nella prima espressione non hai tolto le prime parentesi tonde?

    Lì hanno un altro utilizzo? Sono forse necessarie per correttezza sintattica?

    😄 ti volevo anche chiedere: c'è qualche testo/link che te la sentiresti di consigliarmi come riferimento esaustivo e di facile consultazione concernente le espressioni regolari?

    Io ne ho visti tanti, ma mai nessuno che mi desse modo di trovare chiaramente risposta ai miei quesiti.

    Grazie ancora.:vaiii:


  • User

    Prego, non c'è di che.

    Le parentesi tonde hanno la funzione di salvare ciò che viene trovato dall'espressione regolare che racchiduono, mentre con il dollaro + numerico tu richiami quello che hai salvato in ordine progessivo.

    Nello specifico della tua regola:
    ^(.?)/([0-9])-(.*).htm$ index.php?id=$2
    salvavi

    • Espressione: qualunque carattere (.) ripetuto zero o più volte (*) prima della slash
    • Espressione: qualunque carattere indicato in un range (le parentesi quadre) in questo caso numerico (da 0 a 9) prima del trattino
    • Espressione: qualunque carattere (.) ripetuto zero o più volte (*) prima della estensione .htmlE riutilizzavi solo il numerico trovato dalla seconda espressione come valore del parametro id ($2)

    Le altre due espressioni non occorre salvarle, dato che non le uilizzi, ma le devi indicare perché la regola si applichi a tutte le url strutturate allo stesso modo:
    pippo/1-pluto.html piuttosto che paperino/2-topolino.html

    E' un meccanismo un po' astratto, ma quando ci entri dentro è abbastanza potente...

    Per il resto di risorse non ne conosco :bho:, io mi sono "formato sul campo di battaglia" a furia di cornate :arrabbiato:

    Secondo me ti può aiutare un editor come editplus che ha dei set di espressioni regolari predefiniti e commentati.

    Bai


  • User Attivo

    @DuccioG said:

    Per il resto di risorse non ne conosco :bho:, io mi sono "formato sul campo di battaglia" a furia di cornate :arrabbiato:

    Secondo me ti può aiutare un editor come editplus che ha dei set di espressioni regolari predefiniti e commentati.

    Bai

    Ok, affilo le corna allora 😄 thanx.