![]() |
![]() |
|
| Condividi questo contenuto nei Social Network: |
|
Tweet |
|
|
|
Ti stiamo aspettando: Registrati subito e gratis. Entra a far parte di una delle comunità più attive in Italia. Se hai dimenticato i tuoi dati li puoi recuperare subito. |
||||
|
|||||||||
Hey Amico Visitatore, Condividi con noi le tue idee e la tua conoscenza Aprendo una nuova discussione nella sezione Mod Rewrite e Tecniche di URL Redirect |
|
|
LinkBack | Strumenti di discussione |
|
|
#1 (permalink) |
|
User
Data di registrazione: Jul 2010
Ubicazione: Milano
Messaggi: 90
|
Capire la logica del RewriteRule
Ciao a tutti,
sono riuscito a mettere on line, attraverso il file htaccess, la regola del rewriterule che mi cambia il nome delle pagine (migliorandole in ottica SEO), però non ho capito ancora bene come leggere la logica di questa regola. Ecco la regola che ho usato e che non comprendo ancora al 100%: [File Htaccess contenente la regola qui sotto] Codice:
RewriteEngine On RewriteRule ^([^/]+)_([0-9]+)_([0-9]+)_([0-9]+)\.php$ arredamenti-moderni-scheda-prodotto.php?cat=$2&scat=$3&ID=$4 [L] Codice:
$url_rewrite=strtolower(str_replace(" ","-",stripslashes($primoPiano['campo01']).'_'.$primoPiano['categoria'].'_'.$categoria['cat1liv'].'_'.$primoPiano['ID'].'.php'));
1) Nella prima parte della regola del RewriteRule ci sono 4 parentesi tonde ... ma cosa rappresentano nello specifico ? perchè ce ne sono 4 e non 3 ad esempio, visto che le variabili alla fine sono 3 ? 2) Cosa rappresenta questa "([^/]+)" ? quando usarla ? Oppure quando usare questa e non quest' altra "([0-9]+)" ? Grazie a tutti per l'aiuto ... Ciao ![]() |
|
__________________
Nuova Directory: http://www.negozieaziendeitalia.it |
|
|
|
|
|
|
|
|
#2 (permalink) |
|
User Newbie
|
Ciao!
Nel RewriteRule questa parentesi ([^/]+) sta a indicare una sequenza di caratteri alfanumerici. Questa invece ([0-9]+) una sequenza di caratteri esclusivamente numerici. Per ultimo abbiamo ([A-Z,a-z,-]+) che sta a indicare una sequenza di caratteri alfabetici. Ci sono 4 parentesi nel rewrite perchè il tipo di url che sarà richiesto sarà del tipo: testo e cifre tipo "ab8cd62e" + carattere fisso "_" + numero + carattere fisso "_" + numero + carattere fisso "_" + numero + carattere fisso "\" + ".php" I parametri passati tramite GET alla pagina sono 3 perchè credo che il primo sia un nome che non serve alla compilazione della pagina, mentre secondo, terzo e quarto parametro sono ID per ricerche su un DB molto probabilmente, utili alla compilazione specifica della pagina. Spero di esser stato il più chiaro possibile. Good luck! ![]() |
|
Ultima modifica di andrea.amati : 29-12-11 13:30. Motivo: correzione e ampliamento risposta |
|
|
|
|
|
|
#3 (permalink) |
|
User
Data di registrazione: Jul 2010
Ubicazione: Milano
Messaggi: 90
|
Ciao...innanzitutto grazie per la risposta.
Ora è quasi tutto chiaro, però mi rimane questo dubbio: la prima parentesi ([^/]+) la devo mettere perchè la pagina, prima di passargli i vari ID (gli altri 3 dati), ha un nome e (prima di essere riscritta) nel mio caso si chiama "arredamenti-moderni-scheda-prodotto.php" ? Quindi ci va sempre questa prima parentesi, perchè ci sarà sempre il nome di una pagina, giusto? Eccoti un esempio concreto del mio RewriteRule: IN ORIGINE E SENZA RewritweRule apparirebbe nel browser così: Codice:
arredamenti-moderni-scheda-prodotto.php?cat=$2&scat=$3&ID=$4 Codice:
scavolini-cucina-scenery_38_32_333.php |
|
__________________
Nuova Directory: http://www.negozieaziendeitalia.it |
|
|
|
|
|
|
#4 (permalink) |
|
User Newbie
|
no, praticamente è il contrario:
1. il browser client richiede la pagina "scavolini-cucina-scenery_38_32_333.php" 2. il serve riceve la richiesta e compila la pagina "arredamenti-moderni-scheda-prodotto.php?cat=38&scat=32&ID=333" 3. il server restituisce il risultato html al client che gli ha fatto la richiesta P.S. il client, sul suo browser, nella barra degli indirizzi, visualizzerà "scavolini-cucina-scenery_38_32_333.php" però effettivamente sul server la pagina si chiama "arredamenti-moderni-scheda-prodotto.php" e verrà compilata con i parametri passati tramite modalità GET cat=38, scat=32 e ID=333 Non so se sono stato abbastanza esaustivo. ![]() |
|
|
|
|
|
#5 (permalink) |
|
User
Data di registrazione: Jul 2010
Ubicazione: Milano
Messaggi: 90
|
si certo, tutto molto più chiaro ora! grazie.
però la domanda è: quella prima parentesi ([^/]+) serve perchè la pagina ha un nome testuale (prima di arrivare ai vari ID) ? ![]() |
|
__________________
Nuova Directory: http://www.negozieaziendeitalia.it |
|
|
|
|
|
|
#6 (permalink) |
|
User Newbie
|
Quella prima parentesi, in questo caso, assume il valore "scavolini-cucina-scenery".
Sì, perchè c'è una sequenza alfenumerica prima di "_38_32_333.php". Nel tuo caso la sequenza è solo alfabetica, ma ci sarebbero potute essere anche cifre prima del primo underscore. ![]() |
|
|
|
|
|
#7 (permalink) |
|
User
Data di registrazione: Jul 2010
Ubicazione: Milano
Messaggi: 90
|
ok tutto chiaro ora ... grazie
![]() |
|
__________________
Nuova Directory: http://www.negozieaziendeitalia.it |
|
|
|
|
| Tags: rewriterule |
| Strumenti di discussione | |
|
|