
Dowiesz się: Jak przekierować domenę na "bez www" lub "z www" oraz przekierować do HTTPS, jak wprowadzić pomniejsze zabezpieczenia oraz jak zmienić wersje PHP dla Hostingu WWW
Za pomocą pliku .htaccess mamy pewną kontrolę nad zachowaniem skryptów/domeny – niejednokrotnie zajmuje się tym nasz framework/CMS/sklep i nawet o tego nie widzimy, jednak jeśli nasza strona jest stroną statyczną lub z poziomu CMS nie mamy wystarczających opcji to takie zmiany możemy wprowadzić ręcznie właśnie poprzez edycję/utworzenie takiego pliku.
W katalogu ze stroną należy utworzyć plik o nazwie .htaccess lub edytować obecny.
Warto jednak zachować sobie kopię obecnego w razie gdyby nasze zmiany spowodowały problemy w wyświetlaniu strony.
Zmiany wprowadzane w plikach .htaccess mają skutek natychmiastowy. W niektórych przypadkach konieczne może być odczekanie 10 minut na przebudowanie pamięci cache.
Używać tu będziemy przekierowań 301 czyli tzw. “przekierowań stałych”
1) Przekierowanie z HTTP na HTTPS
przykład: http://domena.pl -> https://domena.pl
Jeśli posiadamy zainstalowany certyfikat SSL i chcemy aby wszyscy odwiedzający wchodzili używając https:// nawet jeśli wpiszą po prostu nazwę domeny, w tej sytuacji chcemy zastosować tzw. wymuszenie HTTPS i wystarczy wkleić do pliku .htaccess poniższą regułkę:
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] </IfModule>
Przekierowania do www oraz bez www muszą być skonfigurowane, tzn. musimy wybrać, którą wersją się posługujemy i wdrożyć odpowiednią konfigurację ponieważ ma to duży wpływ na pozycjonowanie strony – bez tego serwujemy tzw. duplikowaną treść (duplicated content) ponieważ zarówno pod www.domena.pl jak i domena.pl silnik wyszukiwarki widzi ten sam content (treść) pod dwoma domenami (tak www. to po prostu inna domena, tak samo jak blog.domena.pl)
2) Przekierowanie do -> BEZ www
przykład: www.domena.pl -> domena.pl
Obecnym trendem jest optymalizacja, dlatego pozbywa się staromodnego wpisywania odwiecznie www. przed nazwą domeny, gdyż nigdy nie miało to większego sensu, odkąd domeny zaczęły służyć w większości do serwowania stron www.
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} !=on RewriteCond %{HTTP_HOST} ^www.(.+)$ [NC] RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L] </IfModule>
3) Przekierowanie domeny do -> www.
przykład: domena.pl -> www.domena.pl
Jeśli jednak chcemy pozostać w zgodzie z tradycją lub www.domena.pl po prostu lepiej wygląda wizerunkowo, używamy
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} !=on RewriteCond %{HTTP_HOST} !^www..+$ [NC] RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </IfModule>
UWAGA: Regułki 2) oraz 3) nie mogą być stosowane jednocześnie – mogą być używane jedynie zamiennie.
4) Przekierowanie katalogu głównego do folderu
przykład: domena.pl -> domena.pl/sklep/
RedirectMatch 301 ^/$ /sklep/
5) Niewidzialne przekierowanie katalogu głównego do folderu
przykład: domena.pl -> domena.pl/sklep/
RewriteEngine on RewriteCond %{REQUEST_URI} !^/sklep RewriteRule ^(.*)$ /sklep/$1 [NC,L]
Pomniejsze zabezpieczenia
Zabezpieczenia poniższe możemy wdrożyć tylko wedle potrzeb dla konfiguracji.
6) Zablokowanie dostępu z poziomu przeglądarki do pewnych typów plików (np. plików konfiguracyjnych strony)
Pliki z rozszerzeniami .bak, .conf, .dist itd. nie będą dostępne (błąd 403 – brak dostępu).
<FilesMatch "(^#.*#|.(bak|conf|dist|fla|in[ci]|log|psd|sh|sql|sw[op])|~)$"> <IfModule mod_authz_core.c> Require all denied </IfModule> </FilesMatch>
7) Zmniejszenie ryzyka MIME-type sniffing
Uniemożliwia przeglądarce ‘węszenia’ po typach MIME, szczególnie przydatne w przypadku stron, gdzie użytkownicy dokonują własnych uploadów plików.
<IfModule mod_headers.c> Header set X-Content-Type-Options "nosniff" </IfModule>
8) Usunięcie X-Powered-By w nagłówku
Jeśli nasz skrypt umieszcza w nagłówku X-Powered-By, a nie mamy możliwości wyłączenia nagłówka z poziomu frameworka, możemy użyć poniższej regułki
( https://php.net/manual/en/ini.core.php#ini.expose-php )
<IfModule mod_headers.c> Header unset X-Powered-By </IfModule>
9) Wymuszenie komunikacji SSL po stronie klienta
Jeśli w przeglądarce użytkownik wpisze “domena.pl”, nawet jeśli serwer przekierowuje do HTTPS czyli bezpiecznej wersji witryny to wciąż istnieje możliwość przekierowania dla atakującego (początkowe połączenie odbyło się przez HTTP) dla osoby atakującej
<IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=16070400" </IfModule>
10) ZMIANA PHP (tylko Hosting WWW)
Warto przypomnieć iż dla klientów naszego Hostingu WWW (nie klientów usługi VPS) zmiana wersji PHP odbywa się również z poziomu .htaccess
Zmiana wersji PHP na hostingu współdzielonym możliwa jest odrębnie dla każdej ze stron, a nawet dla każdego z folderów. Jeśli dla danego folderu nie zdefiniowano wersji PHP to ustawienia dziedziczone są z folderu nadrzędnego.
Wersja PHP 7.0
AddHandler application/x-httpd-php70 .php
Wersja PHP 5.6
AddHandler application/x-httpd-php56 .php
Wersja PHP 5.5
AddHandler application/x-httpd-php55 .php
Wersja PHP 5.4
AddHandler application/x-httpd-php54 .php
Wersja PHP 5.3
AddHandler application/x-httpd-php53 .php
Wersja PHP 5.2
AddHandler application/x-httpd-php52 .php
Pamiętaj! Zawsze trzymaj kopię swojego pliku .htaccess lub pamiętaj o zmianach, które wykonałeś – tak aby móc je ręcznie cofnąć.