• User

    .htaccess per più files?

    Buongiorno, di seguito una domanda alla quale non ho trovato risposta durante le mie ricerche.
    Ho capito come impostare il file .htaccess per visualizzare permalink personalizzati, nella fattispece per ciò che serve a me è sufficente:

    RewriteBase /
    RewriteEngine On
    RewriteRule ([^/]+).html$ index.php?p=$1

    sito.com/argomento.html

    Il problema nasce quando da un'elenco articoli devo suddividere le pagine, quindi passando un'altra variabile GET, ed ho così modificato il permalink, e tutto funziona:

    RewriteRule ([^/]+)_([^/]+).html$ index.php?p=$1&page=$2

    sito.com/argomento_5.html

    Ma mi esce sempre e comunque il numero di pagina (la variabile $2), anche quando è la prima, cosa molto antipatica, sarebbe bello che i link fossero così:

    sito.com/argomento (pagina 1)
    sito.com/argomento_5 (pagina 5)

    Sarà mai possibile?
    Si devono impostare le condizioni?
    Da quel che ho trovato le condizioni servono ad altro...

    E poi ancora, attraverso index.php, genero pagine di ogni genere, da un'elenco prodotti ad un'anagrafica utenti, quindi passo parecchie variabili, nel caso dei prodotti possono essere 2 o 3, mentre per le anagrafiche solo 2, ma, indipendentemente da ciò che voglio vedere devo impostare il permalink prevedento tutte le variabili, e se sono vuote mi restituisce ovviamente errore.
    Pensavo quindi di impostare index.php in un modo, e ad esempio articoli.php in un'altro:

    RewriteRule ([^/]+)_([^/]+).html$ index.php?p=$1&page=$2
    RewriteRule ([^/]+).html$ articoli.php?art=$1

    Non mi funziona ovviamente, in quanto dall'url non riesco a capire che pagina è; c'è un modo per assegnare a pagine diverse (files diversi) impostazioni diverse?
    In altrenativa posso creare directory "vere" dove impostare un'.htaccess ad ogniuna, ma capirete che diventa complessa la gestione; penso ci sia una soluzione, ma da "nuovo" non riesco a vederla...

    Grazie in anticipo 🙂
    Ciao


  • User

    Forse ci sono...
    Cerchi per ore e basta mettere un post che subito leggi la soluzione da qualche parte...

    RewriteBase /
    RewriteEngine On
    RewriteRule ([^/]+)_([^/]+).html$ index.php?p=$1&page=$2
    RewriteRule articoli/([^/]+).html$ articoli.php?p=$1

    E' perfetto... peccato che non funzioni.
    Se sostituisco "...articoli/([^/]+)..." con "...articoli~([^/]+)..." però funziona!

    Sono al punto di prima... 😞


  • Super User

    Ciao potoloso,

    @potoloso said:

    Ma mi esce sempre e comunque il numero di pagina (la variabile $2), anche quando è la prima, cosa molto antipatica, sarebbe bello che i link fossero così:

    sito.com/argomento (pagina 1)
    sito.com/argomento_5 (pagina 5)

    Puoi fare una doppia regola:

    
    RewriteRule ([^/]+).html$ index.php?p=$1&page=1 
    RewriteRule ([^/]+)_([^/]+).html$ index.php?p=$1&page=$2 
    
    

    @potoloso said:

    Forse ci sono...
    Cerchi per ore e basta mettere un post che subito leggi la soluzione da qualche parte...

    RewriteBase /
    RewriteEngine On
    RewriteRule ([^/]+)_([^/]+).html$ index.php?p=$1&page=$2
    RewriteRule articoli/([^/]+).html$ articoli.php?p=$1

    E' perfetto... peccato che non funzioni.
    Se sostituisco "...articoli/([^/]+)..." con "...articoli~([^/]+)..." però funziona!

    Puoi scrivere un link di esempio con cui richiami la pagina della seconda regola?


  • User

    Certamente:

    RewriteRule articoli/([^/]+).html$ articoli.php?p=$1
    sito.com/articoli/nomearticolo.html

    Così non funziona, ma se cambio il carattere "/" con per esempio "~" funziona:

    RewriteRule articoli~([^/]+).html$ articoli.php?p=$1
    sito.com/articoli~nomearticolo.html

    Perfetto per la regola che se "page=1" non compare il numero di pagina. 😄

    Grazie


  • Super User

    Hai impostato il

    
    RewriteBase /
    
    

    ?


  • User

    Si, questo il codice completo:

    RewriteBase /
    RewriteEngine On
    RewriteRule ([^/]+)_([^/]+).html$ index.php?p=$1&page=$2
    RewriteRule articoli/([^/]+).html$ articoli.php?p=$1


  • Super User

    prova cosi:

    
    RewriteEngine On
    RewriteBase /
    RewriteRule ^([^/]+)_([^/]+).html$ /index.php?p=$1&page=$2 
    RewriteRule ^articoli/([^/]+).html$ /articoli.php?p=$1 
    
    

  • User

    Niente da fare, ora tutto 404 not found!
    In realtà sto lavorando in una directory di test chiamata "perma", ma non dovrebbe esserci differenza, quindi il codice esatto in realtà è:

    RewriteEngine On
    RewriteBase /perma/
    
    RewriteRule ^([^/]+)_([^/]+).html$ /index.php?p=$1&page=$2 
    RewriteRule ^articoli/([^/]+).html$ /articoli.php?p=$1 
    

    Se tolgo la "/" prima dell'index nel primo RewriteRule però funziona:

    RewriteRule ^([^/]+)_([^/]+).html$ /index.php?p=$1&page=$2  //non va
    RewriteRule ^([^/]+)_([^/]+).html$ index.php?p=$1&page=$2  //va
    

    Mentre per il secondo RewriteRule non fa differenza, sempre errore.


  • Super User

    Avevo scritto che l'url era del tipo sito.com/articoli/nomearticolo.html
    senza la cartella perma.

    Se i due url sono del tipo:
    perma/aaa_bbb.html (file index.php dentro perma) e articoli/aaa.html (file articoli.php nella document root), prova cosi:

    
    RewriteEngine On
    RewriteBase /
    
    RewriteRule ^perma/([^/]+)_([^/]+).html$ /perma/index.php?p=$1&page=$2 
    RewriteRule ^articoli/([^/]+).html$ /articoli.php?p=$1