Visualizzazione risultati 1 fino 7 di 7

Discussione: Mod rewrite per sottocartelle

  1. #1
    Guest

    Predefinito Mod rewrite per sottocartelle

    Ciao a tutti! Mi sono documentato un po' sul funzionamento del mod rewrite in modo che le mie pagine possano essere meglio indicizzate dai motori di ricerca ed avere una forma anche più consona per i visitatori, però mi sorge un problema. Vi spiego tutto:

    Allora, nel mio file .htaccess ho fatto così, ditemi se è giusto!

    Codice PHP:
    RewriteEngine On
    RewriteBase
    /
    RewriteRule ^([^/]+)/([^/]+).html$ /index.php?pagina=$1&pagina2=$2
    RewriteRule
    ^([^/]+)\.html$ /index.php?pagina=$1 [L]
    La riga 3 sostituisce indirizzi del tipo: index.php?pagina=ciao&pagina2=arrivederci in /ciao/arrivederci.html
    La riga 4 sostituisce indirizzi del tipo: index.php?pagina=ciao in /ciao.html

    Ora, se io volessi scrivere una regola che sostituisse questo indirizzo: index.php?pagina=ciao&pagina3=cartella/arrivederci come devo fare?
    Se richiamo infatti l'url ciao/cartella/arrivederci.html mi da errore...

    Il fatto che il file arrivederci.php si trovi in una cartella, come lo traduco nella regola da inserire nell'.htaccess?

    Grazie per la pazienza! :)
    Ultima modifica di giratempoweb : 13-06-2008 alle ore 13.33.05

  2. #2
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    La seguente soluzione non è adatta alla domanda fatta

    Io ho dovuto risolvere inserendo il file .htaccess anche nelle sottocartelle e modificandolo cosi:
    Codice PHP:
    RewriteEngine On
    RewriteBase
    /cartella/
    RewriteRule ^([^/]+)/([^/]+).html$ /index.php?pagina=$1&pagina2=$2
    RewriteRule
    ^([^/]+).html$ /index.php?pagina=$1 [L]
    EDIT: Dai un occhiata anche qui http://forum.it.altervista.org/basi-...directory.html
    Ultima modifica di dreadnaut : 13-06-2008 alle ore 15.15.51 Motivo: + disclaimer
    Apprezzi l'aiuto? Offrimi un caffè!

  3. #3
    Guest

    Predefinito

    Grazie, avevo letto quella pagina infatti... però, non so, non mi funziona!Ho provato ad impostare il file .htaccess anche nella sottocartella con le tue modifiche ma non mi funziona...

    L'url che devo richiamare sarebbe così: www.miosito.it/ciao/cartella/arrivederci.html giusto?

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    se vuoi andare da gatto/con/gli/stivali/foto.html ad index.php?pagina=foto&percorso=gatto/con/gli/stivali, devi usare una regola che raccolga assieme tutte le directory, tranne il nome del file alla fine, quindi
    Codice PHP:
    RewriteEngine On
    RewriteBase
    /

    # come prima, se vuoi convertire le pagine .html nella dir principale
    RewriteRule ^([^/]+).html$ /index.php?pagina=$1 [L]

    # nuova, per le pagine nelle (finte) sottodirectory
    RewriteRule ^(.+)/([^/]+).html$ /index.php?pagina=$2&percorso=$1
    dove la nuova regola legge: dall'inizio ( ^ ), prendi qullo che c'è fino ad una barra ( .+ ) (il + invece del * ti assicura che non sia vuota, ovvero la barra iniziale), poi verifica che ci sia una barra seguita da qualcosa che non contiene barre ( [^/]+ ), e poi .html per finire ( $ ).

    @miki92: sei già stato avvertito, in particolare su questo argomento che a quanto pare ti è ostico - smettila di suggerire cose inesatte o inadatte
    Ultima modifica di dreadnaut : 13-06-2008 alle ore 15.19.42

  5. #5
    Guest

    Predefinito

    Grazie dreadnaut, soprattutto per la spiegazione! Non capisco però perchè non mi funzioni... non mi compare la pagina desiderata, ma tutto il layout sballato...

    ..in particolare non mi è chiaro perchè da una pagina reale index.php?pagina=foto&percorso=gatto/con/gli/stivali si debba aprire un url fittizio gatto/con/gli/stivali/foto.html ...non sarebbe più coerente foto/gatto/con/gli/stivali.html?

    Dopo tutto, nei miei link del tipo index.php?pagina=foto&percorso=gatto/miao : gatto indica la cartella del sito /gatto/ e miao indica il file miao.php che viene aperto nell'include percorso, contenuto a sua volta nell'include pagina.. Non so se mi sono spiegato :)

    Grazie per la santa pazienza!

  6. #6
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    per quanto riguarda il layout, il problema è che hai usato un percorso relativo nello specificare il css. Così la pagina fittizia cerca il css nella directory fittizia, e non lo trova. Basta mettere uno slash davanti ( e.g. /stile.css ) per rendere i percorsi assoluti rispetto alla radice del sito, e sei a posto.

    Per quanto riguarda il resto, boh, pensavo ti servisse sapere la pagina e il percorso, ma se lo vuoi fare in un altro senso, dovresti essere in grado di cambiare l'espressione regolare nel modo giusto tutti gli indizi sono sopra, e ricorda che $1 $2 $... nella seconda parte della regola corrispondono alle rispettive coppie di parentesi tonde nella prima.

  7. #7
    Guest

    Predefinito

    Grazie ancora, ci lavoro sopra! ;-)

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •