Visualizzazione risultati 1 fino 30 di 30

Discussione: Rewrite delle URL

  1. #1
    Guest

    Predefinito Rewrite delle URL

    Salve,

    sto modificando il file .htaccess per trasformare l'indirizzo dinamico in indirizzo statico, ho scritto il seguente codice:
    Codice:
    # # av:Toolbar
    SetEnv AV_TOOLBAR 1
    
    
    
    RewriteEngine On
    RewriteRule ^/Elettronica/([a-z]+)/([0-9]+).html /Elettronica.php?id=$47&ord=$1 [L]
    Purtroppo non funziona, qualcuno può darmi una mano per favore?

    Grazie
    Antonio
    Ultima modifica di alemoppo : 23-08-2011 alle ore 16.00.53 Motivo: + tag [code]

  2. #2
    Guest

    Predefinito

    Prova questo:

    Codice:
    # # av:Toolbar
    SetEnv AV_TOOLBAR 1
    
    
    
    RewriteEngine On
    ReriteBase /
    RewriteRule ^/Elettronica/([a-z]+)/([0-9]+).html$ /Elettronica.php?id=$2&ord=$1 [L]

  3. #3
    Guest

    Predefinito

    Ho provato, ma mi dice: errore di sintassi nel file .htaccess.

  4. #4
    Guest

    Predefinito

    Citazione Originalmente inviato da mondosconti Visualizza messaggio
    Ho provato, ma mi dice: errore di sintassi nel file .htaccess.

    Mi sono accorto che ho scritto ReriteBase invece di RewriteBase.
    Se hai fatto copia/incolla può essere quello...

  5. #5
    Guest

    Predefinito

    Ho provato, ora non da errore di sintassi, ma cmq non fa quello, però a questo punto spiego quello che voglio fare, perchè magari è sbagliato il principio...
    io ho una pagina Elettronica.php in cui vengo visualizzate degli oggetti, cliccando su ognuno di questi la pagina Elettronica.php si ricarica ricevendo tramite il GET dei paramentri, grazie ai quali invece di mostrare la lista di oggetti mostra solo quello clikkato. E io invece che vedere la pagina http://www.mondosconti.altervista.or...hp?id=47&ord=1 voglio ottenere la pagina http://www.mondosconti.altervista.or...onica.php/47/1 fermo restando che naturalmente poi sostituirò i numeri con del testo significativo.

    Mi auitate per favore?

    Grazie
    Antonio

  6. #6
    Guest

    Predefinito

    Questa funziona. Provata! ;)

    Codice:
    RewriteEngine On
    RewriteBase /
    RewriteRule ^Elettronica.php\/([a-z0-9]+)\/([a-z0-9]+)$ Elettronica.php?id=$1&ord=$2 [L]
    PS: ma se la pagina è .php perchè usavi htm nella regex? e poi nel posto sbagliato?

  7. #7
    Guest

    Predefinito

    Perchè così avevo visto su internet.
    Cmq funziona parzialmente, mi spiego: se tu cerchi su google mondosconti, troverai tra i primi risultati la seguente pagina :http://www.mondosconti.altervista.or...onica.php/47/1 che però non vede il css(perchè?) mentre se digiti http://www.mondosconti.altervista.org e poi tramite categorie vai su Elettronica, clikki su oggetto a caso non funziona, perchè?

  8. #8
    Guest

    Predefinito

    Citazione Originalmente inviato da mondosconti Visualizza messaggio
    Perchè così avevo visto su internet.
    Quindi siccome suu internet c'era così sei esonerato dal cercare di capire come funziona, giusto?
    Garda che non è così che funziona. La pappa pronta non la trovi.
    Se non sai fare una cosa, chiedi e magari qualcuno ti aiuta a farla. Ma qualcuno che ti faccia l'intero lavoro no.
    Per caso, prima di venire sul forum a chiedere che qualcuno ti faccia funzionare un pezzo di codice, hai provato per almeno 10 secondi a capire ilperchè non funziona? Oppure le tue prove si sono limitare ad un copia/incolla, test, non funziona, qualcuno mi sistema la cosa?

    Citazione Originalmente inviato da mondosconti Visualizza messaggio
    se tu cerchi su google mondosconti, troverai tra i primi risultati la seguente pagina :http://www.mondosconti.altervista.or...onica.php/47/1 che però non vede il css(perchè?)
    Ma perchè inserisci i fogli di stile tramite il tag script?
    I fogli di stile vanno inseriti usando le procedure apposite.
    Non ha senso mettere un popup che blocca IE <8 e poi scrivere quel codice...


    Citazione Originalmente inviato da mondosconti Visualizza messaggio
    se digiti http://www.mondosconti.altervista.org e poi tramite categorie vai su Elettronica, clikki su oggetto a caso non funziona, perchè?
    A me funziona.

  9. #9
    Guest

    Predefinito

    Per la prima hai ragione, di solito faccio come dici tu, prendo spunto da internet ma poi capisco il codice e lo cambio, purtroppo però di file .htaccess non è ho mai visti prima e quindi mi sono affidato a internet per mancanza di tempo, poi di apache non ne capisco nulla, sono un programmatore php, asp.net e un po' java quindi è difficile per me.
    Per quanto riguarda i fogli di stile invece sono curioso perchè io sto approfondendo per la prima volta il mondo dei CSS, ma una mia amica che ne capisce di più utlizza quelli script per inserirli. Puoi darmi delle indicazioni su dove andare a vedere sia queste procedure di cui parli, sia maggiori info su .htaccess?

  10. #10
    Guest

    Predefinito

    per i CSS puoi iniziare da qui.

    per htaccess qui.

    A prescindere dalle guide, quando ti trovi di fronte ad un problema, ti posso consigliare di:

    1. Provare a capire il problema e risolverlo
    2. Se non riesci, e chiedi aiuto, cerca di capire com funziona la soluzione proposta
    3. cerca di mettere a frutto quanto imparato

    ;)

  11. #11
    Guest

    Predefinito

    Ciao,

    io ho seguito le tue indicazioni, infatti il sito l'ho chiuso per restayling perchè sto rifacendo lo stile e ora è compatibile per firefox e IE dalla versione 7 in poi, quindi ti ringrazio per questo perchè grazie a te mi sono deciso a rifare tutto lo stile da 0.

    Invece per quanto riguarda il file .htaccess niente sto provando e riprovando, ma niente puoi darmi una mano per favore?

    Ti spiego...nella pagina http://www.mondosconti.altervista.org/TestLibri.php che puoi vedere tu stesso on-line con lo stile rifatto, ma ancora da perfezionare, ci sono una lista di libri, cliccando sul titolo di ognuno si passa alla pagina successiva che vorrei trasformare da così : http://www.mondosconti.altervista.or...titolo=Nessuno a così: http://www.mondosconti.altervista.or....php/1/Nessuno. Sto provando e riprovando, vedendo su internet le varie soluzione ecc.. ma niente, mi aiuti?

    Grazie
    Antonio

  12. #12
    Guest

    Predefinito

    Fai come per la pagina elettronica.

    Codice:
    RewriteEngine On
    RewriteBase /
    RewriteRule ^TestLibri.php\/([a-z0-9]+)\/([a-z0-9]+)$ TestLibri.php?ord=$1&titolo=$2 [L]

  13. #13
    Guest

    Predefinito

    Tu insisti con questo, ma a me non funziona a questo punto mi mandi delle pagine di esempio su cui a te funziona? Così almeno le confronto con le mie e cerco l'errore.

    Grazie
    Antonio

  14. #14
    Guest

    Predefinito

    Prova così

    Codice:
    RewriteEngine On
    RewriteBase /
    RewriteRule ^TestLibri.php/((?:.)*)/((?:.)*)$ TestLibri.php?ord=$1&titolo=$2 [L]

  15. #15
    Guest

    Predefinito

    Nada, ho provato anche questo e niente! :-( Come posso fare?

  16. #16
    Guest

    Predefinito

    Forse ho trovato l'inghippo.

    Prova a cambiare

    Codice PHP:
    <link rel="stylesheet" href="FoglioDiStileProva.css" type="text/css" />
    con

    Codice PHP:
    <link rel="stylesheet" href="/FoglioDiStileProva.css" type="text/css" />
    In pratica stai linkando il file dei css in maniera assoluta a partire dalla root del sito (/) invece che relativa (la stessa cartella del file)
    quini, se, ad esempio, i fogli di stile li metti tutti nella cartella css avresti dovuto mettere

    Codice PHP:
    <link rel="stylesheet" href="/css/FoglioDiStileProva.css" type="text/css" />

  17. #17
    Guest

    Predefinito

    Ho provato anche così, ma niente, però volendo se il problema potrebbe essere quello, posso tranquillamente mettere i css e le immagine relative in una cartella apposita chiamata css, e lasciare nella root solo le pagine.php.
    Dimmi tu...non so più cosa fare

  18. #18
    Guest

    Predefinito

    Citazione Originalmente inviato da mondosconti Visualizza messaggio
    Ho provato anche così, ma niente, però volendo se il problema potrebbe essere quello, posso tranquillamente mettere i css e le immagine relative in una cartella apposita chiamata css, e lasciare nella root solo le pagine.php.
    Dimmi tu...non so più cosa fare
    Il problema non è nel dove sono i file ma i percorsi.
    Se usi il rewrite, per indicare i link (css/js) con percorsi relativi, devi ripercorrere la nuova struttura.
    Per evitare ciò si usa il percorso assoluto a partire dalla root del sito (/).

    La modifica l'hai fatta sulla pagina TestLibri? Mi pare che ora la pagina abbia gli stili corretti, no?
    Ultima modifica di simpleticket : 30-08-2011 alle ore 22.21.36

  19. #19
    Guest

    Predefinito

    Ok, ho capito quello che dici, per questo stamane ho modificato la struttura, ti spiego:

    ho creato le seguenti cartelle:

    css: contenente i fogli di stile e le immagini utilizzate da essi;
    code: in cui ci sono i file php contenenti solo funzioni e i file javascript;
    immagini: contenente tutte le foto del sito;

    in fine nella root ci sono le normali pagine.php.

    E' sufficiente?
    Avevo creato una cartella apposita per inserire solo normali pagine.php ma altervista ha sbroccato dicendo che non vedeva la index che evidentemente deve essere obbligatoriamente nella root e quindi ho rimesso tutti i file php nella root tranne quelli contenenti esclusivamente funzioni che sono rimasti nella cartella "code".

    Purtroppo però in tutto ciò devo aver cancellato erroneamente il file .htaccess, come faccio?

  20. #20
    Guest

    Predefinito

    Come tu strutturi il sito non è influente.

    Devi però linkare css e js usando i percorsi assoluti e quindi a partire dalla root del sito, ad esempio, con la struttura attuale

    Codice PHP:
    <link rel="stylesheet" href="/css/FoglioDiStileProva.css" type="text/css" />
    oppure

    Codice PHP:
    <script type="text/javascript" src="/code/miojs.js"></script>
    mentre per gli include di php puoi usare i percorsi relativi, così se il file da includere si trova nella stessa cartella del file "contenitore" scriverai

    Codice PHP:
    include("file_da includere.php");
    mentre se, ad esempio, si trova nella cartella code, scriverai


    Codice PHP:
    include("code/file_da includere.php");
    se ti trovi nella root, mentre


    Codice PHP:
    include("../code/file_da includere.php");
    se ti trovi, ad esempio dentro la cartella "mia_cartella".

  21. #21
    Guest

    Predefinito

    E fino qui ok, adesso il problema è che non trovo più il file .htaccess, come faccio?

  22. #22
    Guest

    Predefinito

    Citazione Originalmente inviato da mondosconti Visualizza messaggio
    E fino qui ok, adesso il problema è che non trovo più il file .htaccess, come faccio?
    Sono solo 3 righe, perchè non lo ricrei?

  23. #23
    Guest

    Predefinito

    Scusami pensavo che fosse un file che doveva essere creato obbligatoriamente dal sistema...ok ho ricreato il file .htaccess con il seguente contenuto:

    Codice:
    RewriteEngine On
    RewriteBase /
    RewriteRule ^TestLibri.php/((?:.)*)/((?:.)*)$ TestLibri.php?ord=$1&titolo=$2 [L]
    nel file TestLibri il contenuto è il seguente per quanto riguarda il link al css e al js:

    Codice HTML:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Test Libri</title>
    
    <link rel="stylesheet" href="/css/FoglioDiStileProva.css" type="text/css" />  
    <script language="javascript" type="text/javascript" src="/code/Funzioni_menu.js"></script>
    Continua a non funzionare, cosa sbaglio? Ma altervista consente il rewrite oppure no?
    Ultima modifica di karl94 : 31-08-2011 alle ore 15.26.40 Motivo: Formattazione del codice

  24. #24
    Guest

    Predefinito

    Citazione Originalmente inviato da mondosconti Visualizza messaggio
    Continua a non funzionare, cosa sbaglio? Ma altervista consente il rewrite oppure no?
    Si, funziona.
    ho visitato la pagina http://www.mondosconti.altervista.or....php/1/Nessuno e mi pare funzionare.

    Cosa non ti funziona?

  25. #25
    Guest

    Predefinito

    Si effettivamente se digiti l'indirizzo funziona, ma se vado sulla pagina TestLibri.php e poi clicco su un qualsiasi libro, la pagina che si apre non ha l'indirizzo modificato, perchè? E' quello che mi serve!

  26. #26
    Guest

    Predefinito

    Citazione Originalmente inviato da mondosconti Visualizza messaggio
    Si effettivamente se digiti l'indirizzo funziona, ma se vado sulla pagina TestLibri.php e poi clicco su un qualsiasi libro, la pagina che si apre non ha l'indirizzo modificato, perchè? E' quello che mi serve!
    I link non si modificano da soli.
    il link sui titoli dei libri sono del tipo pagina.php?par=xxx&par2=yyy

    quelli devi modificarli tu e farli puntare a pagina.php/xxx/yyy. Il rewrite farà poi il suo compito riscrivendo quell'url nella prima forma.

    Dal sorgente della pagina TestLibri.php

    Codice PHP:
    <a href=/TestLibri.php?ord=1&amp;titolo=PNL &#65533; libert�><h2>PNL � libert�</h2>
    devi farlo diventare (o farlo fare al php)
    Codice PHP:
    <a href=/TestLibri.php?/1/PNL &#65533; libert�><h2>PNL � libert�</h2>
    Ultima modifica di simpleticket : 31-08-2011 alle ore 16.18.08

  27. #27
    Guest

    Predefinito

    Ok tutto fila però a questo punto mi sorge un dubbio.
    Ti spiego il mio scopo e mi dici se la strada che voglio percorrere è giusta...
    io ho la pagina TestLibri.php contenente una lista di libri, voglio fare in modo che cliccando su uno di questi libri la pagina TestLibri.php si ricarica mostrando solo i dettagli del libro cliccato. Per far ciò come avevi visto, nel link dei singoli libri c'erano la variabile ord che in pratica se ha un determinato valore chiama un metodo che carica i dettagli del singolo libro passandoli il titolo che è la seconda variabile contenuto nel link. Durante il caricamento della pagina le 2 variabili le passavo tramite Get , adesso non posso più farlo giusto?

    Allora pensavo che forse sarebbe più oppurtuno sempre se php lo permette, di creare una funzione che crei dinamicamente una pagina web per ogni libro e tutti i vari dati del singolo libro prendendoli da DB.
    Naturalmente questo lo farei tramite una sezione apposita del sito in cui creo le inserzioni.

    In questo modo nella pagina TestLibri ci saranno normalissimi link alla pagine già create.

    Se pò fa? E tu che consigli?

  28. #28
    Guest

    Predefinito

    Dunque, mi pare che tu habbia un po0 di confusione in testa e quindi non riesci a fare nessun passo avanti nella ricerca di una soluzione al tuo problema.

    Vediamo se posso aiutarti a fare un po' di chiarezza:

    Il rewrite non fa altro che far vedere al sever i dati che chiedi in un altro modo.
    Così, impostando la regola che ti riscrivo

    Codice:
    RewriteEngine On
    RewriteBase /
    RewriteRule ^TestLibri.php/((?:.)*)/((?:.)*)$ TestLibri.php?ord=$1&titolo=$2 [L]
    se tu digiti l'indirizzo

    Codice PHP:
    TestLibri.php/1/Nessuno
    è come se avessi scritto

    Codice PHP:
    TestLibri.php?ord=1&titolo=Nessuno
    e di fatti se richiedi la pagina nella seconda forma, la regola di riscrittura non viene richiamata e ti viene fornita la pagina richiesta.
    Usare l'una o l'altra forma sta a te. E mi pare che, riscrittura a parte, il tuo sito funzioni già così. O no?
    Quello che devi fare è, al momento, cambiare il come crei i link.

  29. #29
    Guest

    Predefinito

    Non esattamente, nel senso che nella pagina TestLibri.php ci sono la variabile "ord" che prende il valore che riceve dal Get in base al qualche chiama una funzione piuttosto che un'altra e la variabile "titolo" che prendere sempre valore dal Get.
    Queste 2 variabili non beccano più nulla dall'url, come posso fare?

  30. #30
    Guest

    Predefinito

    Comunque la scrivi

    Codice PHP:
    TestLibri.php?ord=1&titolo=Nessuno
    oppure

    Codice PHP:
    TestLibri.php/1/Nessuno
    in base alle regole di riscrittura di prima

    Codice:
    RewriteEngine On
    RewriteBase /
    RewriteRule ^TestLibri.php/((?:.)*)/((?:.)*)$ TestLibri.php?ord=$1&titolo=$2 [L]
    il risultato è lo stesso:
    alla pagina TestLibri vengono passate due variabili ORD e TITOLO entrambe col metodo GET.

    Quello che cambia è solo il modo di come sono visualizzate, non il funzionamento.

Tags for this Thread

Regole di scrittura

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