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();
}