Dziś stanąłem przed nie lada dylematem – Ja zielony programista miał za zadanie przekierować duplikaty stron za pomocą skryptu PHP. No i były schody – praktycznie 99% wyników pokazuje jak zrobić przekierowanie 301 z www lub bez www i rożne inne warianty w PHP i w htaccess ale … nie mogłem znaleźć jak pozbyć się „index.php”. Z pomoca przyszło Forum Google dla Webmasterów 🙂 – dzięki COLIN !

Poniżej wklejam co nieco dla potomnych:

-> Problemy bez www na www

if( !ereg("www\.", $_SERVER['HTTP_HOST']) ){
header ('HTTP/1.1 301 Moved Permanently');
header ("Location: http://www.domena.pl/");
exit;
}

 

-> Problemy z https, http oraz index.php

if (is_numeric($_SERVER['HTTPS_KEYSIZE'])) $protokol = 'https://';
else $protokol = 'http://';


$host = $_SERVER['HTTP_HOST'];

if (strlen($host)==0)
{
$host = $_SERVER[‚SERVER_NAME’];
$port = $_SERVER[‚SERVER_PORT’];
if (!($protokol == ‚http://’ && $port == 80)
|| ($protokol == ‚https://’ && $port == 443))
{
$host .= „:$port”;
}
}

$uri = $_SERVER[‚REQUEST_URI’];

if (basename($uri) == ‚index.php’)
{
header(‚HTTP/1.0 301 Moved Permanently’);
header(‚Location: ‚ . $protokol . $host . dirname($uri) . ‚/’);
exit;
}

1 gwiazdka2 gwiazdki3 gwiazdki4 gwiazdki5 gwiazdek (1 głosów, średnia: 3,00 z 5)

Paweł Gontarek

Paweł Gontarek

Paweł Gontarek - Zgred - pasjonat SEO, staram się zrozumieć czym jest i jak działa SEM oraz UX.

Komentarze

  1. Zamiast / na końcu docelowego adresu w pierwszym skrypcie można wstawić {$_SERVER[„REQUEST_URI”]}, żeby podstrony były przekierowywane prawidłowo.

  2. Kolory bloga się zmieniły czy mi się wydaje? 😉 Coś jaśniej się zrobiło – bardziej przejrzyściej.

  3. Moim zdaniem wydajniejsze byłoby zwykłe porównanie:
    if($_SERVER[‚HTTP_HOST’] != ‚www.domena.pl’) { […] }

    Po drugie powyższa reguła zwalnia z konieczności dokładania kolejnych reguł w przypadku istniejących aliasów dla domeny korzystających z tego samego katalogu, lub tych które w przyszłości mogą się pojawić 🙂

  4. Dzięki zgredzie… czegoś takiego właśnie potrzebowałem… Mój badziewny serwer nie daje dostępu do htaccess (jak go kupowałem nawet nie wiedziałem o istnieniu tego, a teraz żałuje i muszę się męczyć 😀 )

  5. Wklejamy ten kod w header.php czy tworzymy oddzielny plik jakis?

    rozumiem ze tam gdzie jest htttp to podajemy adres jaki chcemy uzyskac?

  6. FFunkcja ereg jest funkcją php która ulega wycofaniu lepiej jej już nie stosować lepiwj użyć strpos

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Kategorie

Najnowsze komentarze

Popularne artykuły