.htaccess: Różnice pomiędzy wersjami
Linia 10: | Linia 10: | ||
Przekierowanie subdomeny test.domena na domena/test bez tworzenia vhosta. | Przekierowanie subdomeny test.domena na domena/test bez tworzenia vhosta. | ||
− | + | <syntaxhighlight lang="apache"> | |
− | + | RewriteEngine On | |
− | + | RewriteCond %{HTTP_HOST} ^(www\.)?test\.domena$ [NC] | |
− | + | RewriteCond %{REQUEST_URI} !^/test/ | |
+ | RewriteRule ^(.*)$ /test/$1 [L] | ||
+ | </syntaxhighlight> | ||
====Przekierowanie przy błędzie 301==== | ====Przekierowanie przy błędzie 301==== | ||
Przekierowanie dla jednej strony do ''domena'': | Przekierowanie dla jednej strony do ''domena'': | ||
− | + | <syntaxhighlight lang="apache">Redirect 301 /strona.php http://domena/strona.html</syntaxhighlight> | |
Przekierowanie całej strony do ''domena'': | Przekierowanie całej strony do ''domena'': | ||
− | + | <syntaxhighlight lang="apache">Redirect 301 / http://domena/</syntaxhighlight> | |
Przekierowanie całej strony do subfolderu ''domena'': | Przekierowanie całej strony do subfolderu ''domena'': | ||
− | + | <syntaxhighlight lang="apache">Redirect 301 / http://domena/subfolder/</syntaxhighlight> | |
Przekierowanie subfolderu strony do ''domena'': | Przekierowanie subfolderu strony do ''domena'': | ||
− | + | <syntaxhighlight lang="apache">Redirect 301 /subfolder http://domena/</syntaxhighlight> | |
Przekierowanie żądań do plików html do plików z tą samą nazwą z rozszerzeniem php: | Przekierowanie żądań do plików html do plików z tą samą nazwą z rozszerzeniem php: | ||
− | + | <syntaxhighlight lang="apache">RedirectMatch 301 (.*)\.html$ http://domena$1.php</syntaxhighlight> | |
+ | ====Hostowanie stron html bez rozszerzenia==== | ||
+ | |||
+ | <syntaxhighlight lang="apache"> | ||
+ | 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] | ||
+ | </syntaxhighlight> | ||
====Zabezpieczenie przed hotlinkowaniem obrazków==== | ====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. | Hotlinkowanie to umieszczanie na stronie obrazków, które użytkownik pobiera z zewnętrznego serwera. Przykładowa blokada wygląda następująco. | ||
− | + | ||
− | + | <syntaxhighlight lang="apache"> | |
− | + | 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] | ||
+ | </syntaxhighlight> | ||
====Zabezpieczanie katalogu hasłem==== | ====Zabezpieczanie katalogu hasłem==== | ||
Linia 43: | Linia 59: | ||
Plik z hasłami należy utworzyć dodając pierwszego użytkownika poleceniem <code>htpasswd -c /usr/home/''login''/hasla.passwd ''username''</code>. Folder, który ma być chroniony hasłem powinien zawierać plik .htaccess o następującej treści: | Plik z hasłami należy utworzyć dodając pierwszego użytkownika poleceniem <code>htpasswd -c /usr/home/''login''/hasla.passwd ''username''</code>. Folder, który ma być chroniony hasłem powinien zawierać plik .htaccess o następującej treści: | ||
− | + | <syntaxhighlight lang="apache"> | |
− | + | AuthType Basic | |
− | + | AuthUserFile "/usr/home/login/hasla.passwd" | |
− | + | require valid-user | |
+ | AuthName "Zabezpieczony katalog" | ||
+ | </syntaxhighlight> | ||
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 <code>htpasswd -D /usr/home/''login''/hasla.passwd username</code>. | 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 <code>htpasswd -D /usr/home/''login''/hasla.passwd username</code>. | ||
Linia 52: | Linia 70: | ||
====Domyślne kodowanie plików tekstowych ==== | ====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 <code>AddDefaultCharset</code>, np. | 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 <code>AddDefaultCharset</code>, np. | ||
− | + | <syntaxhighlight lang="apache"> | |
− | + | AddDefaultCharset utf-8 | |
+ | </syntaxhighlight> | ||
==== Blokowanie adresów IP==== | ==== Blokowanie adresów IP==== | ||
Blokowanie konkretnego adresu ip: | Blokowanie konkretnego adresu ip: | ||
− | + | <syntaxhighlight lang="apache">deny from 123.123.123.123</syntaxhighlight> | |
Blokowanie zakresów ip (123.123.123.1 - 123.123.123.254): | Blokowanie zakresów ip (123.123.123.1 - 123.123.123.254): | ||
− | + | <syntaxhighlight lang="apache">deny from 123.123.123.0/24</syntaxhighlight> | |
==== Blokowanie ze względu na domenę==== | ==== Blokowanie ze względu na domenę==== | ||
Blokowanie dostępu do strony, jeśli wejście nastąpiło z ''domena.com'' lub ''domena.net'': | Blokowanie dostępu do strony, jeśli wejście nastąpiło z ''domena.com'' lub ''domena.net'': | ||
− | + | <syntaxhighlight lang="apache"> | |
− | + | RewriteEngine On | |
− | + | RewriteCond %{HTTP_REFERER} domena\.com [NC,OR] | |
− | + | RewriteCond %{HTTP_REFERER} domena\.net | |
+ | RewriteRule .* - [F] | ||
+ | </syntaxhighlight> | ||
[[Category:WWW]] | [[Category:WWW]] |
Wersja z 13:09, 23 cze 2015
.htaccess to plik konfiguracyjny, który pozwala samodzielnie definiować zestawienia regół rewrite. Jest zgodny ze "standardem" Apatche i obsługuje go autorski moduł do ngnix.
Plik .htaccess
może znajdować się w katalogu głównym domeny: /usr/home/login/domains/domena/
bądź w dowolnym jego podkatalogu.
Spis treści
- 1 Przykłady
- 1.1 Przekierowanie subdomeny na podkatalog
- 1.2 Przekierowanie przy błędzie 301
- 1.3 Hostowanie stron html bez rozszerzenia
- 1.4 Zabezpieczenie przed hotlinkowaniem obrazków
- 1.5 Zabezpieczanie katalogu hasłem
- 1.6 Domyślne kodowanie plików tekstowych
- 1.7 Blokowanie adresów IP
- 1.8 Blokowanie ze względu na domenę
Przykłady
Poniżej znajduje się kilka przykładów zastosowania tego pliku. Część z nich jest autorstwa użytkowników MyDevil.
Przekierowanie subdomeny na podkatalog
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 przy błędzie 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"
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]