Redirect su URL inesistenti con HTACCESS

  • Creatore Discussione Creatore Discussione Jonn
  • Data di inizio Data di inizio

Jonn

Utente Attivo
29 Dic 2012
352
3
18
Pistoia
Salve a tutti,
Nel mio sito web (vedi firma) ho il file .htaccess scritto in questo modo:
Codice:
RewriteEngine On
RewriteBase /
ErrorDocument 404 http://www.johnnyferrari.it/?pagina=404
RewriteRule ^([a-zA-Z0-9-_]+)$ /index.php?pagina=$1

Funziona tutto alla perfezione, vorrei adesso eseguire un Redirect 301 alle URL inesistenti quindi:

Vorrei che digitanto l'indirizzo in questa forma:
http://www.johnnyferrari.it/index.php?pagina=[nomepagina]

Nella barra degli indirizzi si visualizzi la url in questa forma:
http://www.johnnyferrari.it/[nomepagina]

So che è possibile con un redirect da htaccess.

Premetto che ho già provato aggiungendo semplicemente [R=301] a fine riga 4, ma non funziona.

Grazie in anticipo a tutti.
 
Per tutti puoi farlo con .htaccess

Codice:
^(.*) index.php?pagina=$1 [L]

Anche se credo che un redirect del genere darebbe parecchi redirect indesiderati. Io farei questo:

Codice:
^pag/(.*) index.php?pagina=$1 [L]

Invece per il 404 solo per le pagine che corrispondono alla regola di sopra non so se si possa fare in .htaccess
Sul mio sito ho fatto in modo che quando la pagina viene cercata nel database, nel caso essa non venga trovata dia un errore 404 con un contenuto diverso dai 404 normali. (invece di "pagina non trovata" veniva scritto "articolo non trovato" o "sezione non trovata")
 
Ma io senti, ho provato così:
Codice:
RewriteEngine On
RewriteBase /
ErrorDocument 404 http://www.johnnyferrari.it/?pagina=404
RewriteRule ^([a-zA-Z0-9-_]+)$ /index.php?pagina=$1
Redirect 301 ^pag/(.*) index.php?pagina=$1 [L]
E così:
Codice:
RewriteEngine On
RewriteBase /
ErrorDocument 404 http://www.johnnyferrari.it/?pagina=404
RewriteRule ^([a-zA-Z0-9-_]+)$ /index.php?pagina=$1
Redirect 301 ^(.*) index.php?pagina=$1 [L]

Ma niente, mi da errore 500, specifico che sono hostato su server condiviso su Aruba.
 
Non puoi fare redirect 301 in quel modo, devi usare rewriterule

Codice:
RewriteRule ^pag/(.*) index.php?pagina=$1 [L]
/pag/ciao > index.php?pagina=ciao
 
Ok per il suggerimento, ma non ho il risultato voluto:

Forse non mi sono spiegato bene riprovo:

facendo una ricerca da google:

- site:www.johnnyferrari.it

Ho scoperto che sono indicizzati ancora i links con scritto il nome della variabile ed il suo valore:

- ?pagina=nomepagina

Vorrei che se qualcuno clicca su uno dei link scritti in questo modo (da Google) , venga reindirizzato sui nuovi links scritti in questo modo:

- http://www.johnnyferrari.it/nomepagina

E che anche la URL nella barra degli indirizzi venga visualizzata in questo modo.
 
Non credo si possa fare da htaccess

Io farei in PHP un controllo sull'URL con CURL e se vede che non è un URL SEO effettua il redirect all'URL SEO prima di caricare la pagina.
 

Discussioni simili