Temat przekierowania 301 w .htaccess (z www na bez www lub odwrotnie) wałkowany jest na wielu portalach, ale ciężko dokopać się do jego ogólnej postaci, w której jeden kod działa dla wszystkich domen.
Przypomnijmy jak wygląda standardowy kod przekierowania 301 w .htaccess (w tym wypadku z bez-www na www):
RewriteEngine On RewriteCond %{HTTP_HOST} ^webowiec.net RewriteRule ^(.*)$ http://www.webowiec.net/$1 [R=permanent,L]
Po utworzeniu pliku .htaccess w katalogu głównym serwisu o treści podanej powyżej, serwer przekieruje wszystkie zapytania z adresu:
http://webowiec.net na adres: http://www.webowiec.net
Edytując w tym kodzie adres strony z “webowiec.net” na własny, otrzymamy działający ale jednorazowy kod przekierowania – działający tylko w 1 domenie.
Jak zrobić ogólne przekierowanie htaccess bez podawania za każdym razem adresu strony?
Wystarczy standardowy kod zamienić poniższym:
</pre> <pre>RewriteEngine On RewriteCond %{HTTP_HOST}//s%{HTTPS} ^www\.(.*)//((s)on|s.*)$ [NC] RewriteRule ^ http%3://%1%{REQUEST_URI} [L,R=301]</pre> <pre>
Jest to uniwersalne rozwiązanie problemu przekierowania strony z adresu www na adres bez-www.
Wersja kodu z przekierowaniem bez-www na z-www:
RewriteEngine On RewriteCond %{HTTP_HOST}//s%{HTTPS} ^([^www\.]{1}.*)//((s)on|s.*)$ [NC] RewriteRule ^ http%3://www.%1%{REQUEST_URI} [L,R=301]
W powyższych przykładach została dodana obsługa adresów https dla połączeń szyfrowanych.