fbpx
Agencja SEO Zgred - Pozycjonowanie stron www

Przekierowanie 301 w pliku php bez dostępu do htaccess

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 - Zgred - pasjonat SEO, staram się zrozumieć czym jest i jak działa SEM oraz UX.

Komentarzy (12)

  1. Colin
    Maj 2, 2012

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

  2. Buhavo
    Maj 2, 2012

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

  3. Kamil
    Maj 2, 2012

    if( !ereg(„www\.”, $_SERVER[‚HTTP_HOST’]) )
    =>
    if (strpos(‚www.’, $_SERVER[‚HTTP_HOST’]) === false)
    http://pornel.net/ereg

  4. 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ć 🙂

  5. Jakub Wiącek
    Maj 4, 2012

    a to przekierowanie bedzie np mniej widoczne dla botów typu majestic czy seomoz?

    • zgred
      Maj 4, 2012

      Nie robiłem testów więc nie wiem czy będzie widoczne. Na pewno www/nonwww jest widoczne.

  6. Marian
    Maj 4, 2012

    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ć 😀 )

  7. fortunately102
    Maj 8, 2012

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

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

    • zgred
      Maj 8, 2012

      zalezy jak masz skonstruowaną stronę – tutaj wklejałem w header aby skrypt wykonany był jak najwcześniej.

  8. Radek
    Maj 8, 2012

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

Zostaw komentarz

Twój adres e-mail nie będzie udostępniony. Wymagane pola są oznaczone *

Szkolenie SEO - Warszawa - 22 luty 2019

Jeśli chcesz się dowiedzieć jak pozycjonować i optymalizować

serwisy internetowe małe i duże

to szkolenie jest dla Ciebie!

Sprawdź program i zarejestruj się