- Home
- Categorie
- La Community Connect.gt
- Tutto sulla Community
- mod_rewrite
-
mod_rewrite
Ciao, faccio subito una domanda in merito ad un argomento di cui ne so veramente poco : PHP
Qui stiamo lavorando sul progetto di un nuovo portale e chi sta seguendo la parte PHP ha passato il pomeriggio leggento discussioni e tutorial sul mod_rewrite in quanto dobbiamo far si che il sito generi indirizzi furbi e senza parametrituttelesagre/index.php?blocco=regione&sp=sardegna
ad un più logico
tuttelesagre/regione/sardegna.html
ciò che non ci è chiaro è questo:
utilizando questa RewriteRule^/regione/(.*).htm$ index.php?blocco=regione&sp=$1
riusciamo in parte ad ottenere cio che vogliamo
cioè digitando a mano l'indirizzo nella forma "corretta" il link funziona e ci porta alla pagina giusta,
ora xò vogliamo capire se con un'altra regola possiamo modificare l'url che genera in automatico il php oppure siamo costretti a rivedere ogni file (e vi assicuro non son pochi) x renderli dalla forma "non corretta" in quella "corretta" a mano......questo è il nostro dubbio ......
già grazie a chi ci risolverà questa briga
-
Ciao ,
@fraz said:
utilizando questa RewriteRule
>^/regione/(.*).htm$ index.php?blocco=regione&sp=$1 >``` .... io qui aggiungerei un redirect permanente (301) ;) [/quote] @fraz said: > ora xò vogliamo capire se con un'altra regola possiamo modificare l'url che genera in automatico il php oppure siamo costretti a rivedere ogni file (e vi assicuro non son pochi) x renderli dalla forma "non corretta" in quella "corretta" a mano...... ..intendi dire : * che tutti i link dinamici-php presenti in una pagina dovrebbero essere trasformati in statici? * oppure che ogni chiamata dinamica-php debba essere riscritta, da un'altra regola di Rewrite, in forma statica?Nel caso 1) non so come è fatto il sito e come sono gestiti i link; ma in ogni caso di converebbe inserire un gestore di link in modo che ogni volta che ne vuoi cambiare la struttura devi solo modificare questo gestore (funzione, classe, wrapper ...quello che sia) e non tutto il sito. Nel caso 2) devi inserire un qualcosa che ti eviti di entrare in un loop inifinito dinamico-statico-dinamico :x
-
redirect 301..... ammetto di nn sapere di che si tratta.....
i link vengon generati nella forma /?azione=&sp= etc etc
il problema e che essendo molto complesso "speravo" la soluzione potesse essere una doppia regola di conversione, ma a quanto mi pare di intuire genererebbe un loop (ed in effetti non avevo pensato a questa possibilità)quindi la soluzione è creare una funione (oggetto o quant'altro) che modifichi in automatico ogni link se non ho capito male...... corretto?
-
ciao fraz e benvenuto sul forum!!
se il sito non è mai stato indicizzato non devi pensare al 301
altrimenti se sei già su google devi pensare anche a questo fattore per non avere contenuti duplicatimod_rewrite funziona in un solo senso come hai visto
le soluzioni son tre:
1- come ha detto ublogtoo, farsi un metodo/funzione che genere un link SEF (lo faccio sempre da 2-3 mesi a questa parte, è comodissimo)
2- modificare tutti i file a mano
3- far generare la pagina senza buttarla in output al browser, cercare nel codice html ottenuto (tramite espressioni regolari) i link e trasformarli (metodo usato da vBSEO - il plugin che ottimizza gli url di questa board)1- dovevi pensarci prima
3- potrebbe essere complesso se non sei pratico di espressioni regolari e comunque è più lento
2- se non hai un qualcosa del tipo xhtmltemplate::writeahref (il caso 1) è la strada che percorrerei in quanto probabilmente la più veloce (per implementare il caso 1 oltre a crearti la funzione, devi richiamarla in ogni pagina)spero di esserti stato utile
ciao,
Francesco
-
sicuramente x il prossimo lavoro di queste dimensioni ci penserò prima ma ora con molta calma e tanta pazienza si rimedia a tutto......
credo che la soluzione più semplice, visto che non son molto ferrato con l'espressioni regolari, sia di modificarmi a mano gli url generati dinamicamente, lungo come procedimento ma almeno son sicuro di non far errori enormibeh.....avrò un lungo fine settimana davanti a me
grazie per la tempestività e x le ottime guide che un pò mi han confuso devo ammettere ma grazie al forum ogni dubbio è sparito
-
fraz io sono disposto a convertire la struttura con i link esatti.. risparmiandoti tempo e fatica. fammi sapere.
-
@osvi said:
ciao fraz e benvenuto sul forum!!
se il sito non è mai stato indicizzato non devi pensare al 301
altrimenti se sei già su google devi pensare anche a questo fattore per non avere contenuti duplicatigrazie del benvenuto
il sito non è ancora stato indicizzato da google, perchè non lo ho ancora linkato da nessun bl esterno e non lo ho ancora segnalato.
perchè dici che rischio di avere contenuti duplicati ?grazie dell'offerta edo flashas, ma il progetto è ancora in fase di startup e avvio, quindi preferisco modificare tutto internamente, almeno per adesso...
-
ci siamo capiti male
- se non sei già indicizzato: google non saprà mai i tuoi url dinamici e non hai problemi di duplicate content
- se sei già indicizzato devi: devi segnalare (tramite header 301) che gli indirizzi delle pagine sono cambiati
insomma sei a posto così
ciao,
Francesco
-
@osvi said:
ci siamo capiti male
- se non sei già indicizzato: google non saprà mai i tuoi url dinamici e non hai problemi di duplicate content
- se sei già indicizzato devi: devi segnalare (tramite header 301) che gli indirizzi delle pagine sono cambiati
insomma sei a posto così
ciao,
Francescovabbè osvi ma se google indiizza la pagina con url dinamico php?zona=ddd
con il mod rewrite non indicizzerà sempre
dinamico php?zona=ddd
che problema sorge?infondo raggiungendo
dinamico php?zona=ddd
si raggiungerà la pagina riscritta dall'url
ddd.html
-
google continua ad indicizzare php.?zona=add
poi ti passa per la home
e vede che hai una nuova pagina ddd.htmlse non sei a te a dirgli che l'indirizzo che ha richiesto non va bene (?zona=add) e che deve usare quello nuovo (ddd.html) nelle serp potresti avere degli indirizzi mischiati, ed essere penalizzato per contenuti duplicati in quando la stessa pagina è accessibile da due indirizzi differenti
infondo raggiungendo dinamico php?zona=ddd si raggiungerà la pagina riscritta dall'url ddd.html
esatto è proprio questo il problema
quando un utente o google accede a ?zona=ddd deve ricevere un header http1.1 301 e un location al nuovo indirizzospero di averti chiarito le idee
-
@osvi said:
ci siamo capiti male
- se non sei già indicizzato: google non saprà mai i tuoi url dinamici e non hai problemi di duplicate content
- se sei già indicizzato devi: devi segnalare (tramite header 301) che gli indirizzi delle pagine sono cambiati
insomma sei a posto così
ciao,
Francescook, perfetto.
allora continuo con la politica che intendevo seguire: finiamo di sistemare l'url rewrite e poi segnalo il sito a Google.
grazie
-
@osvi said:
google continua ad indicizzare php.?zona=add
poi ti passa per la home
e vede che hai una nuova pagina ddd.htmlse non sei a te a dirgli che l'indirizzo che ha richiesto non va bene (?zona=add) e che deve usare quello nuovo (ddd.html) nelle serp potresti avere degli indirizzi mischiati, ed essere penalizzato per contenuti duplicati in quando la stessa pagina è accessibile da due indirizzi differenti
esatto è proprio questo il problema
quando un utente o google accede a ?zona=ddd deve ricevere un header http1.1 301 e un location al nuovo indirizzospero di averti chiarito le idee
si capito... quindi per questo è consigliato farlo in anticipo...?
il mod rewrite.Qundi farlo in un secondo momento significa cambiare la struttura gerarchi del url dinamico?
che senon fa far eil redirect 301 se abbiamo intenzine di fare un mode rewritirng url.
-
infatti sto riscontrando non pochi problemi.....
Il fatto è che non sto lavorando ad un sito "semplice" ma ad un portale, quindi ogni immagine è generata dinamicamente, ogni informazione, i css etc etc
dopo tutta la mattina ho ottenuto che una parte dei link fuinzionassero, ma nessun css e nessuna foto:x......mi sa di impresa titanica farlo a questo punto visto la complessità del lavoro
....
x OSVI
sarei cmq curioso di avere piu informazioni sul metodo che utilizzi tu, x automatizzare la cosa.....grazie ancora x il rapido supporto
-
fraz.. ripeto io sarei in grado di implementare una classe che fa tutto da se.. fammi sapere come stai impostando la cosa nel tecnico.
-
fraz. svuota casella posta.. privata.
-
svuotata...
ma non si può aumentare il limite max di messaggi privati ?
-
supponiamo che $rr sia un array che contiene un record mysql
[php]
$query=mysql_query('SELECT .. FROM news WHERE ...');
while ($rr = mysql_fetch_array($query)) {
...
}[/php]in questo modo itero i risultati della query, e fin qui tutto ok
la cosa "cool" consiste, dentro al while, di non mettere un echo "<a href..." ma di richiamare una funzione, o un metodo[php] {
........
AmpletechNews::writeahref($rr);
......
}[/php](se non lavori con le classi sparisce NomeClasse:: - tutto il resto è identico)
prima di analizzare (e quindi scrivere il codice di ) writeahref, vediamo i tipi di url- su quel portale ci sono delle recensioni che hanno un url particolare (stile "repubblica")
- ci sono news con url più umani
questa funzione contiene quindi un IF: seleziono un ramo se sono in una recensione, l'altro se è l'url di una news
[php]function writeahref($record) {
if ($record['categoria'] == ID_CAT_RECENSIONI) // echo url recensione stile repubblica
else // echo url di una news
}[/php]that's all. quando devi scrivere un url basta che metti una chiamata alla funzione e risolvi tutto in modo elegante e velocespero di essere stato chiaro, ma se hai ancora dubbi fatti avanti!
Francesco
ps: per i pvt, no, il limite è definito in base al gruppo utente
-
Ottimo sistema per smistare il lavoro devo dire.... la funzione in questione (purtroppo non uso molto gli oggetti.....mio limite lo ammetto ) è un ottimo modo x migliorare la pulizia del codice......
Questo mi fa tornare alla mente il solito discorso, piu si lavora cn carta e penna migliore sarà il risultato !!!!!
Sarà un suggerimento che al prossimo lavoro prenderò sicuramente in considerazione, ora non ha senso smontare un'intera struttura di una certa complessità x ogni link...andrei sicuramente a commettere errori di distrazione
Di nuovo grazie a tutti x la rapidità nelle risposte e nel modo in cui si affronta un argomento che fino a 3 giorni fa x me era del tutto sconosciuto
-
figurati, grazie a te