Jak wykonać proste przekierowania w htaccess

W htaccess możesz więcej - opisujemy kilka przydatnych funkcji


img

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ąć.


Podziel się lub polub!

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

trzynaście + cztery =



Zapraszamy do HitMe.pl


Twój obecny hosting Cię męczy i ...

…i nie masz czasu na ciągłe zmiany i szukanie nowych opcji? Wybierz naszą ofertę – znajdziesz u nas pakiet idealnie dopasowany do Twoich potrzeb, a jeśli go nie ma – chętnie przygotujemy indywidualne rozwiązanie, a wszystko to w sposób, który nie obciąży Cię finansowo.