.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.  
RewriteEngine On
+
<syntaxhighlight lang="apache">
RewriteCond %{HTTP_HOST} ^(www\.)?test\.domena$ [NC]
+
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/test/
+
RewriteCond %{HTTP_HOST} ^(www\.)?test\.domena$ [NC]
RewriteRule ^(.*)$ /test/$1 [L]
+
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'':
Redirect 301 /strona.php <nowiki>http://</nowiki>''domena''/strona.html
+
<syntaxhighlight lang="apache">Redirect 301 /strona.php http://domena/strona.html</syntaxhighlight>
 
Przekierowanie całej strony do ''domena'':
 
Przekierowanie całej strony do ''domena'':
Redirect 301 / <nowiki>http://</nowiki>''domena''/
+
<syntaxhighlight lang="apache">Redirect 301 / http://domena/</syntaxhighlight>
 
Przekierowanie całej strony do subfolderu ''domena'':
 
Przekierowanie całej strony do subfolderu ''domena'':
Redirect 301 / <nowiki>http://</nowiki>''domena''/subfolder/
+
<syntaxhighlight lang="apache">Redirect 301 / http://domena/subfolder/</syntaxhighlight>
 
Przekierowanie subfolderu strony do ''domena'':
 
Przekierowanie subfolderu strony do ''domena'':
Redirect 301 /subfolder <nowiki>http://</nowiki>''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:
RedirectMatch 301 (.*)\.html$ <nowiki>http://</nowiki>''domena''$1.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.
RewriteEngine on
+
 
RewriteCond %{HTTP_REFERER} !^$
+
<syntaxhighlight lang="apache">
<nowiki>RewriteCond %{HTTP_REFERER} !^http://</nowiki>''domena''$      [NC]
+
RewriteEngine on
<nowiki>RewriteCond %{HTTP_REFERER} !^http://</nowiki>.*\.''domena''$      [NC]
+
RewriteCond %{HTTP_REFERER} !^$
<nowiki>RewriteCond %{HTTP_REFERER} !^http://</nowiki>''domena''/.*$      [NC]
+
RewriteCond %{HTTP_REFERER} !^http://domena$      [NC]
<nowiki>RewriteCond %{HTTP_REFERER} !^http://</nowiki>.*\.''domena''/.*$      [NC]
+
RewriteCond %{HTTP_REFERER} !^http://.*\.domena$      [NC]
RewriteRule .*\.(jpg|jpeg|gif|bmp)$ - [F,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:
AuthType Basic
+
<syntaxhighlight lang="apache">
AuthUserFile "/usr/home/''login''/hasla.passwd"
+
AuthType Basic
require valid-user
+
AuthUserFile "/usr/home/login/hasla.passwd"
AuthName "Zabezpieczony katalog"
+
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.
AddDefaultCharset utf-8
+
<syntaxhighlight lang="apache">
 
+
AddDefaultCharset utf-8
 +
</syntaxhighlight>
 
==== Blokowanie adresów IP====
 
==== Blokowanie adresów IP====
  
 
Blokowanie konkretnego adresu ip:
 
Blokowanie konkretnego adresu ip:
deny from 123.123.123.123
+
<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):
deny from 123.123.123.0/24
+
<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'':
RewriteEngine On
+
<syntaxhighlight lang="apache">
RewriteCond %{HTTP_REFERER} domena\.com [NC,OR]
+
RewriteEngine On
RewriteCond %{HTTP_REFERER} domena\.net
+
RewriteCond %{HTTP_REFERER} domena\.com [NC,OR]
RewriteRule .* - [F]
+
RewriteCond %{HTTP_REFERER} domena\.net
 +
RewriteRule .* - [F]
 +
</syntaxhighlight>
  
  
 
[[Category:WWW]]
 
[[Category:WWW]]

Wersja z 14: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.

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]