PHP: Lezione 5 – Redirect

Posted on gennaio 12, 2008
Filed Under Appunti di Php | Leave a Comment

Capire come gestire i redirect per ovviare agli errori piu’ comuni ci aiutera’ a capire come risolvere degli inconvenienti che spesso accomunano siti piu’ o meno grandi. Il significato dei redirect permanenti (301) o temporanei (302) e’ fondamentale per labuona gestione di un sito e per impostare il proprio sito in ottica SEO oriented.

Spesso il sito e’ raggiungibile sia dal nome del dominio che dal nome del sito ossia digitando example.com o www.example.com vedremo le stessa informazioni. Per ovviare al problema basta impostare all’interno del file .htaccess le seguenti righe:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

O, alternativamente:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.example\.com
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

L’altro problema e’ quello di mostrare www.example.com/index.php o www.example.com/. In questo caso occorre inserire nel .htaccess:
RewriteEngine on
RewriteCond %{THE_REQUEST} ^GET\ .*/index\.(php|html)\ HTTP
RewriteRule ^(.*)index\.(php|html)$ /$1 [R=301,L]

In tal modo www.example.com/index.php reindirizza con un 301 verso www.example.com.
All’interno della index.php potremo avere la seguente struttura:
<?php
// redirect index.php e index.html verso /
require_once ‘include/urlRedirect.php’;
indexUrl();
?>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.1//EN”
“http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”>
<html>
<head>
<title>Redirect in corso</title>
</head>
<body>
<h1>Benvenuto nei redirect</h1>
</body>
</html>

All’interno della directory include avremo il file urlRedirect.php cosi’ fatto:
<?php
// redirect da index.php e index.html verso /
function indexUrl()
{
// Redirect verso /
if (preg_match(‘#(.*)index\.(html|php)$#’, $_SERVER[‘REQUEST_URI’], $captures))
{
// Redirect 301
header(‘HTTP/1.1 301 Moved Permanently’);
header(‘Location: ‘ . $captures[1]);
}
}
?>

Esistono anche Javascript e meta refresh per fare redirect ma non sono molto utili allo scopo perche’ possono essere male interpretati ed essendo abusati dagli spammer sono per questo considerati sospetti.
Questo un esempio di meta refresh dopo 10 secondi:
<meta http-equiv=”refresh” content=”10;url=http://www.example.com/“>

Nella prossima sezione capiremo come utilizzare i redirect per evitare e gestire il contenuto duplicato.

Tag:, , ,

Others Script adv

Leave a Reply