Visualizzazione risultati 1 fino 14 di 14

Discussione: [htaccess] Rewrite non funge

  1. #1
    Forumanicomio non è connesso Utente
    Data registrazione
    02-07-2007
    Messaggi
    228

    Predefinito [htaccess] Rewrite non funge

    Ciao, ho cercato... ho applicato un po' tutte le soluzioni che ho trovato nei vari messaggi, e quelle che ho trovato in vari siti.. ma nessuna pare fungere, forse sono pisquano io, visto che è la primissima volta che tento un rewrite.

    vediamo se ho capito:

    ho creato una cartella /prova/ sul mio spazio qui, giusto per fare delle prove, visto che l'altro mio spazio NON supporta htaccess (quindi, poi ripulisco tutto, quel sito verrà pubblicato altrove). L'indirizzo è quindi http://forumanicomio.altervista.org/prova/index.php

    vedete che è il classico sito con link dinamici, e quello che vorrei ottenere è navigarlo tramite link statici, tipo xxxxx.htm dove lui quando uno chiama xxxxx.htm ovviamente deve chiamare e presentare index.php?data=xxxxx

    pensavo quindi che una roba del genere dovesse funzionare, ovviamente ho messo il file .htaccess nella cartella /prova/

    Codice:
    RewriteEngine On
    RewriteBase /
    RewriteRule ^/([.*]+)\.htm$ /index.php?data=$1 [NC]
    il contenuto della parentesi tonda è stato provato anche :
    ([a-z]+)
    (.+)

    ma se digito http://forumanicomio.altervista.org/prova/contatti.htm invece di aprire la pagina corretta : http://forumanicomio.altervista.org/...?data=contatti mi becco un 404 :(

    Siate buoni, date una mano anche a me...
    Grazie...

  2. #2
    L'avatar di darkwolf
    darkwolf non è connesso Super Moderatore
    Data registrazione
    18-04-2007
    Residenza
    Reggiolo (RE)
    Messaggi
    6,552

    Predefinito

    Provato a cambiare
    RewriteBase /
    in
    RewriteBase /prova
    ?
    » Salvatore Noschese - L'AltroWeb | Seguimi su: facebook | twitter | Google+
    # Che aspetti? Unisciti alla community! Tanti nuovi gruppi ti aspettano


  3. #3
    Forumanicomio non è connesso Utente
    Data registrazione
    02-07-2007
    Messaggi
    228

    Predefinito

    Non avevo provato, adesso si.

    Ho provato con RewriteBase /prova e anche senza niente, in entrambi i casi ho provato
    (.+)
    ([a-z]+)
    ([^/]+)

    Totale 6 casi..

    In tutti e sei errore 404 se tentavo di accedere alla pagina contatti.htm

    Accipicchiolina :-(

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

    Predefinito

    Prova con uno dei due (anche se penso che il prima già vada bene):

    Codice PHP:
    RewriteEngine On
    RewriteBase
    /prova/
    RewriteRule ^([.*]+)\.htm$ /prova/index.php?data=$1 [NC]
    Codice PHP:
    RewriteEngine On
    RewriteBase
    /prova/
    RewriteRule ^([.*]+)\.htm$ index.php?data=$1 [NC]
    Apprezzi l'aiuto? Offrimi un caffè!

  5. #5
    Forumanicomio non è connesso Utente
    Data registrazione
    02-07-2007
    Messaggi
    228

    Predefinito

    Non va in nessuno dei due modi, miki...

    Il file htaccess deve stare nella cartella prova, no?

    Ovviamente in pannello di altervista ho controllato, htaccess è attivo.

  6. #6
    Guest

    Predefinito

    Hai provato ad inserire il codice nell'htaccess in root?

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

    Predefinito

    Citazione Originalmente inviato da Forumanicomio Visualizza messaggio
    Non va in nessuno dei due modi, miki...

    Il file htaccess deve stare nella cartella prova, no?

    Ovviamente in pannello di altervista ho controllato, htaccess è attivo.
    C'è di sicuro qualche errore nella regexp che al momento mi sfugge, ma se vuoi andare sul sicuro puoi utilizzare questo:

    Codice PHP:
    RewriteEngine On
    RewriteBase
    /prova/
    RewriteRule ^(.*).htm$ index.php?data=$1 [NC]
    Apprezzi l'aiuto? Offrimi un caffè!

  8. #8
    Forumanicomio non è connesso Utente
    Data registrazione
    02-07-2007
    Messaggi
    228

    Predefinito

    Citazione Originalmente inviato da biccheddu Visualizza messaggio
    Hai provato ad inserire il codice nell'htaccess in root?
    Ci avevo provato, ma senza togliere quello nella cartella "prova".

    Ora l'ho fatto, ho messo l'ultimo codice postato da miki all'inizio dell'.htaccess che stava già nella root e cancellato quello della cartella prova

    In parte ha funzionato, se digito /prova/xxxx.htm almeno chiama la pagina, poi c'è ancora uno sbaglio, ma credo sia dovuto al fatto che i nomi sono quasi uguali (index dovrebbe includere xxxx.html e non lo trova più, credo perchè il rewrite è intervenuto di nuovo, proverò a fare in modo che l'include non "matchi" più con il rewrite)...

    la cosa strana, però, è che se chiamo xxxx.htm dalla root, lui chiama lo stesso il file index.php della cartella prova, e TROVA il file corretto xxxx.html da includere, solo che non ci sono più i css, che stavano dentro la cartella prova. (cmq il comportamento corretto, alla fine della fiera, sarà che TUTTO INSIEME starà in una CARTELLA SOLA, quindi immagino che vistolo funzionare una volta sia meglio che aspetti di fare il lavoro quando sposterò tutto nella sede definitiva...)

    Che dite?

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

    Predefinito

    Dico che stiamo facendo una grande confusione

    Non ho capito che stai eseguendo solo dei tests ma non ho capito se hai bisogno di altro aiuto o meno. Ciò che mi è entrato in testa è che il codice funge per metà perchè hai un problema con index ed xxxx.html (html? non era htm?). Se hai bisogno di maggiore aiuto posta i nomi dei file e magari i link di esempio così che si possa procedere meglio nell'aiutarti
    Apprezzi l'aiuto? Offrimi un caffè!

  10. #10
    Forumanicomio non è connesso Utente
    Data registrazione
    02-07-2007
    Messaggi
    228

    Predefinito

    Citazione Originalmente inviato da miki92 Visualizza messaggio
    Dico che stiamo facendo una grande confusione

    Non ho capito che stai eseguendo solo dei tests ma non ho capito se hai bisogno di altro aiuto o meno. Ciò che mi è entrato in testa è che il codice funge per metà perchè hai un problema con index ed xxxx.html (html? non era htm?). Se hai bisogno di maggiore aiuto posta i nomi dei file e magari i link di esempio così che si possa procedere meglio nell'aiutarti
    Si, sto eseguendo dei test. Il sito, ovviamente alla fine risiederà in un posto tutto suo, nella root.

    Però pensavo ci dovesse essere un meccanismo per cui il file .htaccess proteggesse o regolasse LA SUA cartella, dove sta.

    Il codice in effetti funge per metà. Ho rinominato i file dei contenuti in txt da html che erano, per essere sicuro.

    allora, ovviamente la pagina index.php è la struttura, e chiama delle pagine con i dati, le pagine con i dati sono ora dei file txt: home.txt contatti.txt ecc..

    index.php?data=home chiama home.txt al posto giusto, e così via

    io vorrei ottenere che home.html (prima avevo messo html perchè i nomi dei file coi dati erano html... adesso non lo sono più) vada alla pagina index.php?data=home, insomma vorrei navigare il sito con link e files html, senza che si veda quindi che è php

    Se uno chiamerà il sito vedrà la index, senza che appaia perchè è di default, poi i link interni saranno html

    Ora confermo che il codice funge a metà, perchè non trova la pagina da includere, e non la trova perchè il parametro che è stato passato dall'$1 è stato "prova/contatti" e non solo "contatti" quindi essendo io dentro la cartella prova (perchè ho chiamato forumanicomio.altervista.org_/prova/contatti.html), non lo ha beccato bene

    (ho messo underscore qui affinchè NON resti un vero link pubblicato)

    Ma così ci metto un secondo a risolvere:

    Ecco il codice che funge, messo nella root, per la cartella prova:
    Codice PHP:
    RewriteEngine On
    RewriteBase
    /prova/
    RewriteRule ^(.*)/(.*).htm$ index.php?data=$2 [NC]
    Ora i link vanno

    Rimane la questione che l'htaccess è fuori dalla cartella "prova", ormai vorrei risolverla per puntiglio, anche se inutile ai fini reali (il sito avrà la sua root, e credo proprio che funzionerà)

    Ora vedo di risolverla

    GRAZIE 1000, cmq... già ci sto capendo molto di più

    EDIT: Magari è una caratteristica di altervista, il fatto che .htaccess funzioni solo nella "root", che in realtà è root per l'utente, ma non certo per il server...

    Insomma... se ci si riesce... bene, se non si riesce ... uguale, in fondo... funziona come deve. Anche nella sottocartella. e funzionerà anche nella root
    Ultima modifica di Forumanicomio : 10-02-2009 alle ore 02.29.37

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

    Predefinito

    Aspetta...stiamo a fare un po' di confusione:
    Codice PHP:
    RewriteBase /prova/
    Qui devi indicare dove applicare il rewrite...e di solito deve essere inserito nella cartella indicata...cioè...se tu metti /prova/ questo rewrite funziona nella cartella indicata dove si dovrebbe trovarsi anche il file .htaccess

    Se vuoi applicare il rewrite nella root o in tutto lo spazio devi inserire il file .htaccess nella root del sito e modificare in questo modo:
    Codice PHP:
    RewriteBase /
    Non so se sono stato chiaro...nel caso negativo...chiedi che ti aiuto
    Apprezzi l'aiuto? Offrimi un caffè!

  12. #12
    Forumanicomio non è connesso Utente
    Data registrazione
    02-07-2007
    Messaggi
    228

    Predefinito

    Citazione Originalmente inviato da miki92 Visualizza messaggio
    Aspetta...stiamo a fare un po' di confusione:
    Codice PHP:
    RewriteBase /prova/
    Qui devi indicare dove applicare il rewrite...e di solito deve essere inserito nella cartella indicata...cioè...se tu metti /prova/ questo rewrite funziona nella cartella indicata dove si dovrebbe trovarsi anche il file .htaccess

    Se vuoi applicare il rewrite nella root o in tutto lo spazio devi inserire il file .htaccess nella root del sito e modificare in questo modo:
    Codice PHP:
    RewriteBase /
    Non so se sono stato chiaro...nel caso negativo...chiedi che ti aiuto
    se io volessi applicare il rewriterule nella cartella DOVE HO MESSO l'htaccess quindi in teoria dovrei scrivere rewritebase / ? (perchè non funzionava...)
    Oppure senza nessun rewritebase? (ma non funzionava nemmeno così...)

    Forse il dubbio in tale caso è come fare a fargli beccare lo schema giusto per fare scattare la regola

    Altrimenti mi è chiaro che se lo metto in root e poi scrivo rewritebase /prova/ seguito da una rule, QUELLA rule verrà eseguita Quando e SOLO QUANDO si chiama un link di /prova/ (questo glielo ho visto fare) [e viene facile anche comporre la regola, ho visto che si applica sull'intero link]

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

    Predefinito

    Codice PHP:
    RewriteBase / #Nella root ed in tutto il sito (salvo eccezzioni)
    RewriteBase /prova/ # Solo nella cartella "prova"
    Apprezzi l'aiuto? Offrimi un caffè!

  14. #14
    Forumanicomio non è connesso Utente
    Data registrazione
    02-07-2007
    Messaggi
    228

    Predefinito

    Citazione Originalmente inviato da miki92 Visualizza messaggio
    Codice PHP:
    RewriteBase / #Nella root ed in tutto il sito (salvo eccezzioni)
    RewriteBase /prova/ # Solo nella cartella "prova"
    OK, questo è già un bel punto di partenza.

    Sottintende che (almeno per ciò che riguarda la rewriterule) il file htaccess DEBBA ESSERE nella root, corretto?

    Allora, visto che stiamo facendo un discorso che può interessare molti: un passetto in più-->

    Per quanto riguarda la riscrittura di url:
    (se) si usa solo l'htaccess nella root: ogni set di regole verrà preceduto dalla SUA PROPRIA rewritebase, in modo che agisca nella cartella corretta?

    diciamo che uno può fare:
    Codice PHP:
    rewritebase /
    ...
    regole che agiscono in root ed in tutto il sito
    ....

    rewritebase/cartella1/
    ...
    regole che agiscono solo in cartella1
    ...

    ecc..
    Ho capito bene?

Regole di scrittura

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