.htaccess
.htaccess to plik konfiguracyjny, który pozwala samodzielnie definiować zestawienia reguł rewrite. Jest zgodny ze "standardem" Apache i obsługuje go autorski moduł do ngnix.
Plik .htaccess
nie należy edytować edytorem tekstu automatycznie dodającym dodatkowe znaczniki BOM (może to spowodować błędne działanie dodanych regułek). W przypadku Notepad++ znak końca linii musi być [LF] (a nie [CR][LF]). Plik zalecamy edytować zdalnie po zalogowaniu się na konto poprzez SSH wykorzystując dostępne edytory (vi, nano, ee itd.). W razie potrzeby znaczniki BOM można usunąć w edytorze mcedit dostępnym po zalogowaniu się na konto poprzez SSH.
Plik .htaccess
może znajdować się w katalogu głównym domeny: /usr/home/login/domains/domena/
bądź w dowolnym jego podkatalogu.
Błąd w składni .htaccess
spowoduje wyświetlenie na stronie komunikatu 500.
Spis treści
- 1 Przykłady
- 1.1 Przekierowanie na SSL
- 1.2 Przekierowanie subdomeny test.domena na domena/test bez tworzenia vhosta.
- 1.3 Przekierowanie za pomocą 301
- 1.4 Hostowanie stron html bez rozszerzenia
- 1.5 Zabezpieczenie przed hotlinkowaniem obrazków
- 1.6 Zabezpieczanie katalogu hasłem
- 1.7 Domyślne kodowanie plików tekstowych
- 1.8 Blokowanie adresów IP
- 1.9 Blokowanie ze względu na domenę
- 1.10 Blokowanie indeksowania zawartości
- 1.11 Parsowanie strony jako XHTML/XML
- 1.12 Przekierowanie adresu strony z www na bez www
Przykłady
Poniżej znajduje się kilka przykładów zastosowania tego pliku. Część z nich jest autorstwa użytkowników MyDevil.
Przekierowanie na SSL
Przekierowanie domeny na szyfrowane połączenie SSL.
RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteRule (.*) https://{HTTP_HOST}%{REQUEST_URI} [R,L]
Przekierowanie subdomeny test.domena na domena/test bez tworzenia vhosta.
RewriteEngine On RewriteCond %{HTTP_HOST} ^(www\.)?test\.domena$ [NC] RewriteCond %{REQUEST_URI} !^/test/ RewriteRule ^(.*)$ /test/$1 [L]
Przekierowanie za pomocą 301
Przekierowanie dla jednej strony do domena:
Redirect 301 /strona.php http://domena/strona.html
Przekierowanie całej strony do domena:
Redirect 301 / http://domena/
Przekierowanie całej strony do subfolderu domena:
Redirect 301 / http://domena/subfolder/
Przekierowanie subfolderu strony do domena:
Redirect 301 /subfolder http://domena/
Przekierowanie żądań do plików html do plików z tą samą nazwą z rozszerzeniem php:
RedirectMatch 301 (.*)\.html$ http://domena$1.php
Hostowanie stron html bez rozszerzenia
RewriteBase / RewriteCond %{http://domena} !(\.[^./]+)$ RewriteCond %{REQUEST_fileNAME} !-d RewriteCond %{REQUEST_fileNAME} !-f RewriteRule (.*) /$1.html [L] RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+)\.html\ HTTP RewriteRule ^([^.]+)\.html$ http://www.proofers.co.uk/new/$1 [R=301,L]
Zabezpieczenie przed hotlinkowaniem obrazków
Hotlinkowanie to umieszczanie na stronie obrazków, które użytkownik pobiera z zewnętrznego serwera. Przykładowa blokada wygląda następująco.
RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://domena$ [NC] RewriteCond %{HTTP_REFERER} !^http://.*\.domena$ [NC] RewriteCond %{HTTP_REFERER} !^http://domena/.*$ [NC] RewriteCond %{HTTP_REFERER} !^http://.*\.domena/.*$ [NC] RewriteRule .*\.(jpg|jpeg|gif|bmp)$ - [F,NC]
Zabezpieczanie katalogu hasłem
Istnieje możliwość zabezpieczenia całego katalogu na stronie hasłem (lub nawet całej strony WWW). W poniższych przykładach argument username należy zastąpić loginem wybranego użytkownika, a argument login loginem konta MyDevil.
Plik z hasłami należy utworzyć dodając pierwszego użytkownika poleceniem htpasswd -c /usr/home/login/hasla.passwd username
. Folder, który ma być chroniony hasłem powinien zawierać plik .htaccess o następującej treści:
AuthType Basic AuthUserFile "/usr/home/login/hasla.passwd" require valid-user AuthName "Zabezpieczony katalog"
Następnie na plik .htaccess należy dodać uprawnienia odczytu:
chmod +r .htaccess
AuthUserFile wskazuje na plik, który utworzono wcześniej. Jest możliwość używania różnych plików z loginami i hasłami do różnych folderów. Usuwanie użytkownika odbywa się za pomocą polecenia htpasswd -D /usr/home/login/hasla.passwd username
.
Domyślne kodowanie plików tekstowych
W przypadku udostępniania plików .txt w których nie sposób określić kodowania znacznikiem meta bądź innych plików w których nie ustawiono kodowania można wymusić prawidłowe wyświetlanie przez przeglądarki za pomocą dyrektywy AddDefaultCharset
, np.
AddDefaultCharset utf-8
Blokowanie adresów IP
Blokowanie konkretnego adresu ip:
deny from 123.123.123.123
Blokowanie zakresów ip (123.123.123.1 - 123.123.123.254):
deny from 123.123.123.0/24
Blokowanie ze względu na domenę
Blokowanie dostępu do strony, jeśli wejście nastąpiło z domena.com lub domena.net:
RewriteEngine On RewriteCond %{HTTP_REFERER} domena\.com [NC,OR] RewriteCond %{HTTP_REFERER} domena\.net RewriteRule .* - [F]
Blokowanie indeksowania zawartości
Blokowanie indeksowania zawartości katalogów/katalogu bez pliku index.html/index.php:
Options -Indexes
Parsowanie strony jako XHTML/XML
Aby wymusić użycie przez przeglądarkę parsera XHTML/XML, należy dodać linijkę
AddType application/xhtml+xml .html
Przekierowanie adresu strony z www na bez www
RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} www.domena [NC] RewriteRule ^(.*)$ http://domena%{REQUEST_URI} [R=301,L]