Jednym z największych problemów, z jakimi zderzają się świadomi twórcy witryn internetowych jest zduplikowana treść. Większość nie zdaje sobie sprawy, że strona http://mojastrona.pl i http://www.mojastrona.pl (a także http://mojastrona.pl/index.html) to różne strony! Jak sobie z tym radzić.
Uważaj co robisz!
Pierwsza porada aktualna przy prawie każdym projekcie. Planuj swoje linki. Zdecyduj się, czy linkujesz do ([cci]http://mojastrona.pl[/cci] czy do [cci]http://mojastrona.pl/index.html[/cci] i tego się konsekwentnie trzymaj.
Przekierowania 301
Zdecyduj się, czy adres Twojej strony ma zawierać www, czy nie. Następnie zaplanuj odpowiednie przekierowanie. Jeżeli należysz do szczęściarzy, których serwer obsługuje [cci]mod_rewrite[/cci] Apache – to masz szczęście. Aby automatycznie dodać przedrostek www, wystarczy taki wpis w pliku [cci].htaccess[/cci]:
[code]RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.
RewriteRule ^(.*) http://www.mojastrona.pl/$1 [QSA,L,R=301][/code]
Jeżeli nie chcemy przedrostka [cci]www[/cci], wówczas korzystamy z kodu
[code]RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.mojastrona.pl$ [NC]
RewriteRule ^(.*)$ http://mojastrona.pl/$1 [R=301,L][/code]
Warto również pamiętać o tym, żeby każdy adres kończył się znakiem [cci]/[/cci]. Oto kod załatwiający tę sprawę:
[code]RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$
http://%{HTTP_HOST}/$1/ [L,R=301][/code]
A gdy nie można .htaccess?
Wówczas można to zrobić bezpośrednio w skrypcie strony. W pliku index.php (u mnie plik ten odpowiada za wyświetlenie dowolnej treści na stronie), na samym początku umieszczamy
[php]
if(strpos($_SERVER[’HTTP_HOST’],’www.’) === 0) {
$host = substr($_SERVER[’HTTP_HOST’],4,strlen($_SERVER[’HTTP_HOST’])-4);
$adres = „http://” . $host . $_SERVER[’REQUEST_URI’];
Header(’HTTP/1.1 301 Moved Permanently’);
Header(’Location: ’.$adres);
}[/php]
jeśli nie chcemy przedrostka [cci=”true”]www[/cci], a kod poniższy, jeżeli chcemy:
[php]
if(strpos($_SERVER[’HTTP_HOST’],’www.’) !== 0 && strpos($_SERVER[’HTTP_HOST’],’localhost’) !== 0) {
$adres = „http://www.” . $_SERVER[’HTTP_HOST’] . $_SERVER[’REQUEST_URI’];
Header(’HTTP/1.1 301 Moved Permanently’);
Header(’Location: ’.$adres);
}[/php]
A czy Ty masz jakieś własne metody na podstawowe przekierowania? Podziel się nimi w komentarzach.

Leave a Reply