Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: Problema RewriteRule

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    80

    Problema RewriteRule

    Salve a tutti

    Sto provando per la prima volta a riscrivere l'url tramite le direttive nel file .htaccess.
    Ho provato a create un pagina prova.php e rinominarla in prova.html.
    Il file .htaccess contiene le seguenti istruzioni

    codice:
    Options +FollowSymlinks
     RewriteEngine On
     RewriteRule ^(.*)\.php$ $1.html [NC]
    Quando chiamo la pagina

    http://localhost:8081/prova/prova.php

    il server invece di rinominare l'url in

    http://localhost:8081/prova/prova.html

    Mi risponde con un errore :

    codice:
    Not Found
    
    The requested URL /prova/prova.html was not found on this server.
    Qualcuno saprebbe darmi qualche consiglio?

    Ringrazio tutti anticipatamente

  2. #2
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    codice:
    Options +FollowSymlinks
     RewriteEngine On
     RewriteRule ^(.*)\.php$ ./$1.html [NC]
    La rule dovrebbe essere funzionante. Il problema e' il path , se noti la pagina che non trova (da come hai descritto l'errore) è /prova/prova.html ossia parte dalla rootDocument dell sito .

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    80
    Ho capito tutto!
    Avevo interpretato la cosa al contrario!
    Se scrivo

    http://localhost:8081/prova/prova.html

    Mi visualizza la pagina prova.php
    Quindi funziona!
    Scusate il messaggio inutile!

  4. #4
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Beh non e' inutile, avevi un problema / dubbio e una cosa che nnn funzionava come volevi cmq la rewrite rule ha la seguente struttura

    RewriteRule FROM TO [NC]

    Dove
    FROM : url della request
    TO: trasformazione da utilizzare internamente

    Nel tuo caso
    RewriteRule ^(.*)\.php$ ./$1.html [NC]

    FROM : ^(.*)\.php$
    Tutte le stringhe che iniziano con qualsiasi cosa e terminano con .php

    TO : ./$1.html
    Riformatta prendendo il primo match della espressione regolare e concatenalo con .html

    Controllo NON case sensitive

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    80
    Grazie per la risposta!
    Ne approfitto per dei chiarimenti.
    Se non ho capito male il RewriteRule permette , come nel mio caso, di scrivere un href=prova.html e richiamare invece prova.php.
    E' possibile invece fare il contrario?
    Cioè avere un href del tipo prova/prova.php?id=4 e visualizzare un url tipo /prova/4/prova.html

    grazie

  6. #6
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Certo si puo' fare.
    Ma secondo me c'e' 1 poca di confusione.

    di solito in questi casi si aprte da 1 permalink per arrivare alla struttura con query string.

    quindi il motore di ricerca o link o sulla pagina web e' meglio farla con una struttura ben definita

    http://www.iltuosito.it/categoria/nomeprodotto

    Questa tipologia di links aiuta i browser ad indicizzare il tuo sito e ti scollega dalla necessità di dover perfettamente linkare tutto in quanto tra htaccess e le teu procedure php puoi cambiare le pagine senza modificare i nomi dei links

    Ma puoi anche fare una cosa come
    http://www.iltuosito.it/categoria/idProdotto
    ANche se io preferisco la prima soluzione in quanto piu' leggibile e facile da ricordare per l'utente.

    Ora non posso dettagliare oltre ... nel caso ci sentiamo dopo.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    80
    Piano piano le cose si fanno più chiare...
    Quindi da quanto detto, sul mio sito dovrei mettere i link come indicato da te,esempio nome del prodotto piuttosto che l'id, cosa che mi risulta ragionevole e molto più pratica!
    Usare poi .htaccess per riscrivere, tramite espressione regolare, l'url che richiama la pagina che carica i dati da db... e su quest'ultima parte ancora ho un pò di confusione!
    Cmq grazie per il chiarimento e se dopo hai tempo apprezzerò molto altri dettagli !

    Un saluto

    Roberto

  8. #8
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    rispostina veloce,
    si il processo e' quello, ma devi fare attenzione di assegnare corretamente i permalinks onde evitare di avere 2 articoli con lo stesso nome.
    Poi il nome lo usi per caricare l'articolo.
    Una soluzione usata spesso

    www.miosito.it/categoria/nomeprodotto/id

    quindi se manca l'id carichi tutti i prodotti con nome similare altrimenti carichi l'id.
    Questi dati li converti proprio tramite htaccess con la stessa tecnica che hai gia' usato solo devi sistemare la rewrite rule con una cosa come

    codice:
    <IfModule mod_rewrite.c>
    	RewriteEngine On
    	
    	RewriteBase /prodotti/
    	
    	RewriteCond %{REQUEST_FILENAME} !-d  
    	RewriteRule (.+)\/(.+)\/(.+)$ test\.php\?categoria=$1&prodName=$2&prodId=$3[L,NC]
    	
    	
    </IfModule>
    E? scritta al volo nn so se funziona fai qualche prova, cmq e' un punto di partenza.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    80
    Grazie!
    Devo entrare nella logica delle espressioni regolari...
    Ora me la studio un attimo e la provo.
    Ti faccio sapere!

  10. #10
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    okappa facce sapere

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 © 2025 vBulletin Solutions, Inc. All rights reserved.