Progmar Marcin Załęczny

Język:

Przekierowanie serwisu z www na bez www i odwrotnie

Aby przekierować serwis z www na bez www (np. http://www.serwis.pl => http://serwis.pl) wystarczy dodać do htaccessa dwie wyróżnione niżej linijki:


RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^www.serwis.pl
RewriteRule ^(.*)$ http://serwis.pl/$1 [R=301,L]

RewriteCond %{REQUEST_URI} (/|\.htm|\.php.*|\.html|\.xml|\.txt|/[^.]*)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php

Ten sam efekt można osiągnąć w kodzie php (na samym początku kodu):


if (strpos($_SERVER['SERVER_NAME'], 'www.') === 0) {
    $server = substr($_SERVER['SERVER_NAME'], 4);
    header('HTTP/1.1 301 Moved Permanently');
    header('Location: http://' . $server . $_SERVER['REQUEST_URI']);
    exit();
}

Przekierowanie odwrotne natomiast (np. http://serwis.pl => http://www.serwis.pl) wykonujemy dodając do htaccessa dwie wyróżnione niżej linijki:


RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^serwis.pl
RewriteRule ^(.*)$ http://www.serwis.pl/$1 [R=301,L]

RewriteCond %{REQUEST_URI} (/|\.htm|\.php.*|\.html|\.xml|\.txt|/[^.]*)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php

Lub w kodzie php (na samym początku kodu):


if (strpos($_SERVER['SERVER_NAME'], 'www.') !== 0) {
    header('HTTP/1.1 301 Moved Permanently');
    header('Location: http://www.' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']);
    exit();
}