- Home
- Categorie
- La Community Connect.gt
- News Ufficiali da Connect.gt
- url rewrite e slash (e contenuti duplicati)
-
url rewrite e slash (e contenuti duplicati)
Ciao a tutti...è tutta la mattina che ci provo ma anche leggendo i vari post qui nel forum e da altre parti non ci sono riuscito....
Il mio sito ha delle pagine strutturate così:
vvv.dominio.it/pagina.php?contenuto=prova
io vorrei accedervi tramite:
vvv.dominio.it/contenuto/prova e tramite
vvv.dominio.it/contenuto/prova/Ho provato a scrivere nel file .htaccess qeusto codice ma mi dà errore 500:
RewriteEngine on RewriteRule ^profilo/([^/]+)/$ profilo.php?contatto=$1 RewriteRule ^profilo/([^/]+)$ profilo.php?contatto=$1
Invece se utilizzo questo codice (identico tranne che al posto dello slash "/" c'è il trattino "-") :
RewriteEngine on RewriteRule ^profilo-([^/]+)/$ profilo.php?contatto=$1 RewriteRule ^profilo-([^/]+)$ profilo.php?contatto=$1
funziona tutto...solo che mi permette di arrivare alla pagina voltuta digitando vvv.dominio.it/contenuto-prova/ mentre come ho già detto io vorrei arrivarci digitando
vvv.dominio.it/contenuto/prova e
vvv.dominio.it/contenuto/prova/1-come posso risolvere?
2-Una volta risolto il punto 1 poi potrebbe esserci il problema dei contenuti duplicati visto che digitando:
- vvv.dominio.it/contenuto/prova/
- vvv.dominio.it/contenuto/prova
- vvv.dominio.it/pagina.php?contenuto=prova
otterrei gli stessi identici contenuti.
Come si risolve?non vi sto chiedendo il codice...a quello proverò a pensarci io (semmai poi tornerò qui a chiedere!eheh) vorrei capire il ragionamento logico da fare per evitare questo inconveniente!devo usare dei redirect301 fatti da htaccess?da quale pagina a quale pagina?mi piacerebbe che fosse indicizzata solo la pagina con lo slash finale, cioè vvv.dominio.it/contenuto/prova/
grazie ciao!
-
Nessuno sa aiutarmi? almeno sul punto due...
2-Digitando
- vvv.dominio.it/contenuto/prova/
- vvv.dominio.it/contenuto/prova
- vvv.dominio.it/pagina.php?contenuto=prova
otterrei una pagina con gli stessi identici contenuti.
Come posso evitare di avere questi contenuti duplicati?devo usare dei redirect301 fatti da htaccess?da quale pagina a quale pagina?mi piacerebbe che fosse indicizzata solo la pagina con lo slash finale, cioè vvv.dominio.it/contenuto/prova/
grazie ciao
-
finalmente un thread dove si discute invece di chiedere il codice pronto
per il punto 1 potrebbe essere che il server non ti consente di applicare regole in url differenti da quelli della directory corrente
/.htaccess
/contenuto/x/questo htaccess ti fa modificare solo cioè che appartiene a contenuto ma non ad x
per il punto 2:
controlla le variabili nell'array $_SERVER
verso il fondo ci sono delle stringhe sull'url richiesto
ti basta un if per vedere se è l'url che te consideri principale (e in quel caso non fai niente)
nell'else metti un redirect verso l'url per te principalespero di essermi spiegato
ciao
Francesco
-
perfetto..!grazie mille...erano proprio i 2 consigli che mi servivano..!!!
ciao!
-
Ho risolto così:
pagina php
ho inseirito un controllo della variabile $_SERVER['REQUEST_URI'] e rediretto con un 301 al nuovo URI senza parametrihtaccess
un RewriteRule che si occupa di fare il redirect 301 dagli URI che soddisfano il filtro e che hann lo slash finale agli URI senza slash finale (in pratica tolgo lo slash finale)un RewriteRule per avere le URI più friendly
In fine per testare il tutto ho usato un tools per il check degli headers con queste 4 URI:
vvv.dominio.it/[email protected] (che è l'URI principale)
HTTP/1.1 200 OK
vvv.dominio.it/[email protected]/
HTTP/1.1 301 Moved Permanently to vvv.dominio.it/[email protected]
vvv.dominio.it/parametri.php?contenuto=prova
HTTP/1.1 301 Moved Permanently to vvv.dominio.it/[email protected]
Sembrerebbe tutto ok, giusto??
-
sì direi che sia tutto a posto
-
ma quindi potrebbe essere utile (e quindi non deleterio) inserire un redirect di questo tipo nell index.php?
if (URL senza slash finale){ Header( "HTTP/1.1 301 Moved Permanently" ); Header( "Location: URL con slash finale"); }
-
si certo
prima della graffa chiusa metti un exit; per terminare l'esecuzione altrimenti invii sia il redirect che il codice della pagina (non avrebbe senso)