plik konfiguracyjny htaccess. Moduł przepisywania modów

Htaccess (z kropką na początku nazwy) to plik umożliwiający skonfigurowanie pracy serwera w oddzielnych katalogach (folderach), bez udostępniania głównego pliku konfiguracyjnego. Np. ustawić prawa dostępu do plików w katalogu, zmienić nazwy plików indeksowych, samodzielnie obsługiwać błędy Apache, przekierowywać odwiedzających do specjalne strony błędy.

Jak wiadomo, dyrektywy konfiguracyjne Serwer Apache znajdują się w pliku httpd.conf. Jednak nie zawsze będziesz mieć prawa dostępu do tego pliku. Na przykład, jeśli używasz do hostingu wirtualny serwer, gdy jeden serwer Apache obsługuje wiele witryn, wtedy oczywiście nikt nie pozwoli Ci zmienić jego konfiguracji. Niemniej jednak możesz skonfigurować serwer we własnych katalogach. Możesz to zrobić za pomocą plików .htaccess.

Plik .htaccess można umieścić w dowolnym katalogu. Dyrektywy tego pliku wpływają na wszystkie pliki w bieżący katalog oraz we wszystkich jego podkatalogach (chyba że te dyrektywy zostaną zastąpione dyrektywami bazowych plików .htaccess).

Zmiany wprowadzone w plikach .htaccess zaczynają obowiązywać natychmiast i nie wymagają ponownego uruchomienia serwera, w przeciwieństwie do zmian wprowadzonych w głównym pliku konfiguracyjnym httpd.conf.

Ustawienia httpd.conf umożliwiające korzystanie z plików .htaccess

Aby móc korzystać z tych plików .htaccess wymagane są odpowiednie ustawienia w głównym pliku konfiguracyjnym. Plik httpd.conf musi zawierać dyrektywy, które umożliwią plikowi .htaccess zastąpienie konfiguracji serwera WWW w katalogu. Dyrektywa ta nosi nazwę „AllowOverride”. Można go zainstalować zarówno dla całego serwera (globalnie), jak i dla osobnego katalogu.

DyrektywaAllowOverride może zawierać jedną lub kombinację następujących dyrektyw: All, None, AuthConfig, FileInfo, Indexes, Limit, Options.

Aby nadać dyrektywom plików .htaccess maksymalne uprawnienia, należy ustawić w pliku httpd.conf:

Zezwalaj na zastąpienie wszystkich

Notatka

W razie potrzeby można zmienić nazwę pliku konfiguracyjnego i na przykład nazwać go nie .htaccess, ale access.conf. Nazwa tego pliku jest określona przez dyrektywę AccessFileName w pliku httpd.conf. Ale nadal nie zaleca się tego robić.

Składnia.htaccess

Zanim przyjrzymy się przykładom, przyjrzyjmy się składni dyrektyw w plikach .htaccess.

  • Ścieżki do plików i katalogów muszą być określone w katalogu głównym serwera, na przykład /pub/home/server1/html/

Jeśli nie znasz ścieżki z katalogu głównego serwera, możesz ją znaleźć pytając administratora serwera lub możesz sprawdzić ją samodzielnie, uruchamiając ją na stronie internetowej Funkcja PHP- phpinfo(). Wyświetli się Konfiguracja PHP w postaci fioletowych tabel. Musisz w nich znaleźć zmienną doc_root i sprawdzić jej wartość - będzie to ścieżka z katalogu głównego serwera do twojego głównego katalogu.

  • Nazwy domen muszą zawierać protokoły, na przykład:

Przykłady użycia .htaccess

Przekierowanie globalne (przekierowanie) na inny adres:

Przekieruj / http://www.newsite.ru

Przekierowanie (przekierowanie) tylko przy żądaniu określonych stron:

Przekieruj /firma http://www.newsite.com/newcompany
przekierowanie /forum http://www.newsite.com/newforum

Przy żądaniu stron z katalogów firmowych i forum zostaniesz przekierowany na nowe adresy.

Przekieruj (przekieruj) tylko odwiedzających z określonym adresem IP:

SetEnvIf REMOTE_ADDR 192.145.121.1 REDIR="redir"
PrzepiszWarunek %(REDIR) redir
Przepisz regułę ^/$ /only_for_you.html

Jeśli odwiedzający ma adres IP 192.145.121.1, zostanie mu otwarta strona only_for_you.html.

Zmiana nazwy strony indeksowej:

DirectoryIndex indeks.html indeks.php indeks.shtml

Można określić wiele stron indeksu. Gdy poprosisz o katalog, zostaną one przeszukane w kolejności, w jakiej są wymienione Dyrektywa DirectoryIndex. Jeżeli nie zostanie znaleziony plik indeks.html, przeszukany zostanie plik indeks.php itd.

Wykonaj kod PHP w plikach HTML

UsuńHandler.html.htm
Dodaj typ aplikacji/x-httpd-php .php .htm .html .phtml

Dodając te linie do .htaccess poinstruujesz serwer, aby wykonywał instrukcje PHP nie tylko w plikach z rozszerzeniami *.php i *.phtml, ale także w plikach z rozszerzeniami *.htm i *.html.

Obsługa błędów Apache'a

Dokument błędu 401 /401.html
Dokument błędu 403 /403.html
Dokument błędu 404 /404.html
Dokument błędu 500 /500.html

Gdy wystąpią te błędy, odwiedzający zostanie przekierowany na specjalnie utworzone strony.

  • Błąd 401 — wymagana autoryzacja.
  • Błąd 403 - użytkownik nie przeszedł uwierzytelnienia, odmowa dostępu (Zabronione).
  • Błąd 404 — nie znaleziono dokumentu.
  • Błąd 500 - Błąd wewnętrzny serwery ( Serwer wewnętrzny Błąd).

Zakaz wyświetlania zawartości katalogu w przypadku braku pliku indeksu

Opcje –Indeksy

Określenie w jakim kodowaniu serwer „wysyła” pliki

AddDefaultCharset Windows-1251

Określanie kodowania pobieranych plików

CharsetSourceEnc Windows-1251

Odmów dostępu do wszystkich plików

Odmowa od wszystkich

Odmowa dostępu do wszystkich plików i katalogów w bieżącym katalogu.

Zezwalaj na dostęp tylko z określonego adresu IP

Zamówienie odmowy, zezwolenie
Odmowa od wszystkich
zezwól od 195.135.232.70

Linia Order deny,allow określa, w jakiej kolejności powinny być wykonywane dyrektywy. Najpierw wykonywana jest dyrektywa odmowy dostępu, a następnie dostęp jest dozwolony tylko dla adresu IP 195.135.232.70. Jeśli w pierwszej linii zmienisz kolejność dyrektyw na polecenie Zezwól, Odmów, wówczas dostęp dla tego adresu IP nie zostanie otwarty, ponieważ wykonana jako ostatnia dyrektywa Odmów zastąpi działania dyrektywy Zezwól.

165

Htaccess — użycie i składnia

Twoja ocena: arcydzieło wspaniałe bardzo dobre dobre normalne nie czytałem znośne przeciętne złe bardzo złe nie czytam

W środowisku programowania sieciowego plik .htaccess jest często używany podczas hostowania witryn działających na serwerze Apache. To jest bardzo przydatny plik, który umożliwia zdefiniowanie niezdefiniowanych lub nadpisanie opcji zdefiniowanych w httpd.conf lub apache.conf dla konkretnej witryny lub katalogu tej witryny.

Plik wpływa na katalog bieżący (w którym się znajduje) oraz na wszystkie katalogi „poniżej”, tj. wszystkie katalogi podrzędne, chyba że mają zdefiniowany własny plik .htaccess.

W tym artykule opiszę kilka najczęściej używanych funkcji tego pliku. Oczywiście nie wszystko jest tu opisane, z Internetu można się wiele dowiedzieć, ale poruszone zostały najczęściej spotykane pytania.

Zasady pisania

Dyrektywy plików są podawane po jednej w każdym wierszu.

Wszystkie ścieżki zaczynają się od katalogu głównego witryny (nie od katalogu głównego system plików serwer!)

Na przykład, jeśli wymagany plik na serwerze znajduje się w ścieżce /var/www/mysite.ru/mydir/file.html, wówczas poprawną ścieżką będzie /mydir/file.html

Jeżeli wykonywane jest wskazanie adresu URL, wówczas wskazanie musi być wykonane przy wykorzystaniu wskazania protokołu.

Na przykład, jeśli istnieje przekierowanie na stronę www.mysite.ru, musisz podać http://www.mysite.ru

Komentarze znajdują się po symbolu #

W wyrażeniach, których możesz użyć Zmienne środowiska. Lista najczęściej używanych znajduje się poniżej.

Wreszcie zmiany wprowadzone w pliku zaczynają obowiązywać natychmiast. Nie ma potrzeby restartowania czegokolwiek.

Zmienne środowiska

Chociaż nie często, w pliku .htaccess nadal można używać zmiennych środowiskowych. Niektóre z nich podano poniżej (dzięki stronie htaccess.net.ru):

  • QUERY_STRING (parametry zapytania)
  • REMOTE_ADDR (adres IP gościa)
  • REMOTE_HOST (nazwa hosta gościa)
  • REMOTE_USER (nazwa użytkownika, jeśli została uwierzytelniona)
  • REMOTE_METHOD (metoda przeglądarkowa - GET lub POST)
  • PATH_INFO (ścieżka pliku strony internetowej)
  • HTTP_USER_AGENT (zawartość nagłówka user-agent – ​​typ przeglądarki)
  • HTTP_REFERER (treść nagłówka strony odsyłającej)
  • HTTP_COOKIE (zawartość nagłówka pliku cookie)
  • HTTP_HOST (nazwa hosta witryny)
  • TIME_YEAR (rok, miesiąc itp.)
  • TIME_MIESIĄC
  • TIME_DAY
  • TIME_HOUR
  • TIME_MIN
  • TIME_SEK
  • TIME_WDAY
  • REQUEST_URI (żądany adres URL)
  • REQUEST_FILENAME (żądany plik)
  • THE_REQUEST (pełne żądanie)

Wyrażenia regularne w .htaccess

W tym pliku możesz używać wyrażeń regularnych. Ich składnię podano poniżej. Dzięki stronie htaccess.net.ru

W Wyrażenie regularne Możesz użyć dowolnych drukowalnych znaków i spacji, ale niektóre znaki mają specjalne znaczenie:

  • Nawiasy () służą do oddzielania grup znaków.
  • Znak ^ oznacza początek linii.
  • Znak $ oznacza koniec linii.
  • Symbol. oznacza dowolny znak.
  • Symbol | oznacza alternatywę. Na przykład wyrażenia „A|B” i „(ABC|DEF)” oznaczają odpowiednio „A lub B” i „ABC lub DEF”.
  • Symbol? jest umieszczany po znaku (lub grupie znaków), który może występować lub nie. Na przykład wyrażenie „jpe?g” będzie pasować zarówno do ciągu „jpg”, jak i ciągu „jpeg”. Przykład wyrażenia zawierającego grupę znaków: „super-(puper-)?site”.
  • Znak * jest umieszczany po znaku (lub grupie znaków), który może być nieobecny lub występować nieograniczoną liczbę razy z rzędu. Na przykład wyrażenie „jpe*g” dopasowuje ciągi „jpg”, „jpeg” i „jpeeeeeeg”.
  • Znak + działa podobnie do znaku *, z tą tylko różnicą, że poprzedzający go znak musi wystąpić przynajmniej raz. Na przykład wyrażenie „jpe+g” dopasowuje ciągi „jpeg” i „jpeeeeg”, ale nie „jpg”.
  • Nawiasy kwadratowe służą do wymieniania prawidłowych znaków. Na przykład wyrażenie „” jest równoważne wyrażeniu „a|b|c”, ale opcja z nawiasami kwadratowymi jest zwykle szybsza. Możesz używać zakresów w nawiasach: na przykład wyrażenie „” jest równoważne wyrażeniu „”. Jeśli postacie są w środku nawiasy kwadratowe zaczynać się od znaku ^, oznacza to dowolny znak z wyjątkiem tych wymienionych w nawiasach. Na przykład wyrażenie „[^0-9]+” oznacza ciąg dowolnych znaków z wyjątkiem cyfr.
  • Symbol \ jest umieszczany przed znakami specjalnymi, jeśli są one potrzebne w ich oryginalnej formie. Na przykład wyrażenie „jpe\+g” pasuje tylko do jednego ciągu „jpe+g”.
  • Wszystko po prawej stronie # jest uważane za komentarz.

Jak to włączyć

W systemie Linux (LAMP) konfiguracje Apache zazwyczaj umożliwiają już użycie pliku .htaccess. We FreeBSD może zaistnieć potrzeba specjalnego zezwolenia na ten plik przy użyciu dyrektywyAllowOverride w konfiguracji globalnej lub specyficznej dla witryny.

Zezwalaj na zastąpienie wszystkich

Zakaz czytania wszystkich plików w katalogu

Dostęp z określonego adresu IP

lub odmów, pozwól
Odmowa od wszystkich
zezwól od 192.168.0.1
zezwól od 192.168.0.2


gdzie zamiast 192.168.0.1, wskazane są adresy IP 192.168.0.2, z których użytkownicy mogą uzyskać dostęp do witryny. W przeciwnym razie - błąd 403.

Odmowa dostępu z określonych adresów IP

rozkazuj, pozwól, odmów
pozwolić wszystkim
odmów od 192.168.0.1
odmów od 192.168.0.2


Gdzie zamiast określonych adresów IP należy wskazać te, z których odmówiono dostępu.

Odmowa dostępu do plików przez maskę


rozkazuj, pozwól, odmów
Odmowa od wszystkich


Zamiast ext1, ext2, ext3... wstawiamy nasze rozszerzenia. Reguły odmowy/dostępu określane są w taki sam sposób, jak dla całego katalogu.

Jak szczególny przypadek- możesz ustawić dostęp dla jednego konkretnego pliku (jednak biorąc pod uwagę dziedziczenie praw .htaccess - ten dostęp lub zakaz będzie dotyczył wszystkich podkatalogów - czyli wszystkich plików w tym katalogu i wszystkich katalogów poniżej):


rozkazuj, pozwól, odmów
Odmowa od wszystkich

Hasło do katalogu

Często używane podczas tworzenia witryn internetowych, do których nie każdy może uzyskać dostęp (lub ich części). Przy próbie otwarcia tego adresu przeglądarka internetowa poprosi użytkownika o podanie loginu i hasła.

AuthName „Wprowadź hasło dostępu”
Podstawowy typ uwierzytelniania
PlikAuthUserFile /var/www/mysite.ru/.htpasswd
wymagają prawidłowego użytkownika


UWAGA! Pamiętaj, że tutaj ścieżka do pliku .htpasswd jest określana z katalogu głównego systemu plików serwera, a nie z witryny!

Aby skorzystać z tej metody, musisz mieć plik .htpasswd. Jak go utworzyć i używać, opisano w tej samej witrynie w sekcji internetowej. Oto przykład utworzenia tego pliku:

# htpasswd -c /var/www/mysite.ru/.htpasswd nazwa użytkownika hasło


Jeśli przełącznik -c nie zostanie określony, narzędzie htpasswd nie utworzy pliku ponownie, ale doda nazwę użytkownika do istniejących.

Należy wziąć pod uwagę, że kiedy Ta metoda Login uwierzytelniający i hasło przesyłane są w sposób otwarty formularz tekstowy dlatego zaleca się korzystanie z protokołu HTTPS/SSL.

W szczególnym przypadku konstrukcja ta może być zastosowana wewnątrz bloku hasło tylko do niektórych plików.

Kompleksowa ochrona hasłem

Istnieje struktura witryny:

/mysite.ru/A
/mysite.ru/A/B1
/mysite.ru/A/B2

Należy zadbać o to, aby uwierzytelnianie odbywało się tylko wtedy, gdy wszyscy użytkownicy uzyskują dostęp do katalogu A, ale jednocześnie niektórzy użytkownicy mają dostęp do katalogu B1, a inni mają dostęp do katalogu B2.

Będziemy potrzebować plików .htaccess w każdym katalogu.

Htaccess dla katalogu A:

AuthName „Wprowadź hasło”
Podstawowy typ uwierzytelniania


wymagają prawidłowego użytkownika


.htaccess dla katalogu B1:

AuthName „Wprowadź hasło”
Podstawowy typ uwierzytelniania
AuthUserFile /var/www/mysite.ru/A/.htpasswd

wymagaj użytkownika nazwa użytkownika1 nazwa użytkownika2 nazwa użytkownika3


.htaccess dla katalogu B2:

AuthName „Wprowadź hasło”
Podstawowy typ uwierzytelniania
AuthUserFile /var/www/mysite.ru/A/.htpasswd

wymagaj użytkownika nazwa użytkownika1 nazwa użytkownika4 nazwa użytkownika5


Zamiast usernameX podstawiamy nazwy użytkowników, którzy mają dostęp do odpowiednich katalogów.

Przekierowanie (przekierowanie) na inną stronę

Przekieruj / http://www.anothersite.ru


Jeśli przekierowanie jest trwałe (tj. na zawsze - co jest bardzo przydatne dla Wyszukiwarki), wówczas składnia będzie następująca:

Przekieruj na stałe / http://www.anothersite.ru


Jeśli zamiast słowa „stałe” użyjesz słowa „temp”, przekierowanie będzie tymczasowe.

Inny przykład przekierowania - z określonego katalogu wewnątrz witryny:

Przekieruj /dir2 http://www.anothersite.ru/dir2

Zamiast dyrektywy Redirect używamy dyrektywy RedirectMatch. Różnica polega na tym, że zamiast podawać adres, z którego ma nastąpić przekierowanie, podawane jest wyrażenie regularne.

RedirectMatch (.*)\.gif$ http://mysite.ru/$1.png


Przekierowuje wszystkie żądania do .gif - do plików o tej samej nazwie, ale z rozszerzeniem .png, znajdujących się pod adresem mysite.ru/

Inny przykład:

RedirectMatch (.*\.jpg)$ http://mysite/$1

Przepisz silnik włączony

Przepisz stan %(HTTP_HOST) ^www\.old_site\.ru$

Przepisz stan %(HTTP_HOST) ^old_site\.ru$
RewriteRule ^(.*)$ http://new_site.ru/$1

Pokazywać różne strony w zależności od adresu IP użytkownika

SetEnvIf REMOTE_ADDR 192.168.0.1 REDIR="redir"
PrzepiszWarunek %(REDIR) redir
Przepisz regułę ^/$/another_page.html


Zamiast 192.168.0.1 wstawiamy naszą wartość.

Podstawienie strony startowej

DirectoryIndex inny_plik.php


Zasadniczo zastępujemy tutaj dyrektywę DirectoryIndex określoną w pliku httpd.conf lub apache.conf.

Wymiana stron błędów

Dokument błędu 403 /error403.html
Dokument błędu 404 /error404.html


Tym samym, gdy np. wystąpi błąd 404, przeglądarka nie wyświetli swojej strony, lecz spróbuje wczytać stylizowaną stronę z serwisu.

Uniemożliwia wyświetlenie listy plików w katalogach bez pliku indeksu

Opcje -Indeksy


Tym samym użytkownik nie będzie mógł wyświetlić zawartości katalogu, w którym nie ma pliku indeksu (a w katalogu, w którym znajduje się plik indeksu, domyślnie nie może tego zrobić).

Określanie wyświetlanego kodowania

Możesz powiedzieć przeglądarce, w jakim kodowaniu pliki są do niej wysyłane. Zmniejszy to prawdopodobieństwo błędów w automatyczne wykrywanie kodowania, jeśli pliki są przesyłane w jednym, a z jakiegoś powodu przeglądarka zaczyna je wyświetlać w innym.

AddDefaultCharset Windows-1251

Określanie automatycznej konwersji kodowania pobranych plików

Podczas przesyłania plików do serwisu zostaną one automatycznie przekonwertowane na określone kodowanie.

CharsetSourceEnc koi8-r

Dodawanie procedur obsługi MIME

DodajWpisz „text/html” .myext
AddType „aplikacja/x-rar-compressed” .rar


W ten sposób możemy dodać do naszej witryny dyrektywy, które nie są opisane w globalnej konfiguracji Apache.

Blokowanie niektórych programów użytkownika (przeglądarki internetowe, boty i roboty)

Oto fragment pliku .htaccess, w którym zablokowanych jest kilka programów User-Agent (przeglądarki internetowe, a właściwie boty).

SetEnvIfNoCase Agent użytkownika „^Titan” bad_bot
SetEnvIfNoCase Agent użytkownika "^Wget" bad_bot
SetEnvIfNoCase Agent użytkownika „^SiteSnagger” bad_bot
SetEnvIfNoCase Agent użytkownika „^WebAuto” bad_bot
SetEnvIfNoCase Agent użytkownika „^NetAnts” bad_bot
SetEnvIfNoCase Agent użytkownika „^WebZip/4.0” bad_bot
SetEnvIfNoCase Agent użytkownika „^httplib” bad_bot


Zamów Zezwól, Odmów
Zezwól wszystkim
Odmów od env=bad_bot


Lista „złych” klientów użytkownika jest tutaj bardzo mała i podana jest jedynie jako przykład.

Ustawienia PHP

Oprócz zmiennych httpd.conf i apache.conf może zaistnieć potrzeba zmiany wartości określonych w php.ini ustawienia php. Plik .htaccess pozwala na robienie takich fajnych rzeczy. Służą do tego dyrektywy php_value i php_flag.

Różnica między php_value i php_flag: pierwsza dyrektywa przypisuje określoną wartość do ustawienia:
wartość_php
a drugi włącza lub wyłącza ustawienie logiczne:
flaga_php

UWAGA! Nie możesz używać php_admin_flag i php_admin_value w pliku .htaccess!

Na przykład kod

php_flag magic_quotes_gpc 0
php_flag magic_quotes_runtime 0


wyłączy automatyczną ucieczkę danych w PHP (wyłącz MagicQuotes) i kod

wartość_php limit_pamięci 64M

zastąpi tę wartość maksymalna ilość pamięć przydzielona dla witryny.

Wartości te zastępują wartości zdefiniowane w pliku php.ini lub definiują je, jeżeli nie zostały ustawione przez administratora serwera hostingowego. Nie ma sensu wymieniać tutaj całej listy ustawień PHP - można ją znaleźć w dokumentacji potrzebne php Wersje dla Ciebie.

Przepisz moduł

Serwer Apache zawiera moduł Rewrite. Pomimo tego, że jest on używany w pliku .htaccess, nie będziemy go teraz opisywać, ponieważ To odrębny temat, zasługujący na osobny artykuł.

Dotyczy: Apache 2.x

To nie wszystko, co można zrobić z plikiem .htaccess. Konkretnych przykładów jest mnóstwo w Internecie, tutaj zebrano te najczęściej potrzebne.

Zezwól na dostęp z określonego adresu IP: zamów zezwolenie odmów
Odmowa od wszystkich
pozwolić od<ваш ip>W w tym przypadku, <ваш ip> wskazuje konkretny adres.
Na przykład: zamów zezwolenie odmów
Odmowa od wszystkich
zezwól od 192.126.12.199

Odmów dostępu z określonego adresu IP: zamów zezwolenie odmów
Odmowa od wszystkich
odmówić od<ваш ip>Stosowanie <ваш ip> podobnie jak w powyższym przykładzie.

W zależności od kolejności podawania dyrektyw zmienia się logika działania serwera. Jeśli Odmów, Zezwól, dostęp zostanie zabroniony ze wszystkich adresów IP z wyjątkiem określonych. Jeśli Zezwalaj, Odmów, dostęp będzie dozwolony ze wszystkich adresów IP z wyjątkiem określonych. Następne powinny być sekcje opisujące dostęp i zakaz. Słowo kluczowe Wszystko znaczy od wszystkich IP

Na przykład chcemy odmówić (zablokować) dostęp z IP 81.222.144.12 i 81.222.144.20 i pozwól wszystkim innym, których musimy dodać .htaccess następujący kod:

Zamów Zezwól, Odmów
Zezwól wszystkim
Odmów z 81.222.144.12, 81.222.144.20

Dla odwrotnej sytuacji, gdy chcemy odmówić dostępu każdemu IP oprócz 81.222.144.12 i 81.222.144.20 musimy dodać do .htaccess następujący kod:

Zamów Odmów, Zezwól
Odmowa od wszystkich
Zezwól od 81.222.144.12, 81.222.144.20

Aby umożliwić dostęp do serwera tylko określonym hostom lub grupom hostów, host można określić w dowolnym z następujących formatów:

  • dla nazwy domeny (lub jej części): Zezwól z Apache.org
    Zezwalaj z .net example.edu
  • dla adresu IP: Zezwalaj od 10.1.2.3
    Zezwól od 192.168.1.104 192.168.1.205
  • dla części adresu IP:
    Zezwalaj od 10.1
    Zezwalaj od 10 172.20 192.168.2
  • dla pary sieć/maska: Zezwalaj od 10.1.0.0/255.255.0.0
  • dla specyfikacji sieci/nnn CIDR:
    Zezwalaj od 10.1.0.0/16

Zablokuj grupę plików według maski:
rozkazuj, pozwól, odmów
Odmowa od wszystkich
Określa dostęp do pliku według jego rozszerzenia.
Na przykład odmowa dostępu do plików z rozszerzeniem „inc” osobom odwiedzającym stronę internetową:

rozkazuj, pozwól, odmów
Odmowa od wszystkich

W w tym przykładzie Sam serwer WWW Apache może uzyskać dostęp do plików z takimi rozszerzeniami.

Zakaz konkretny plik:
Możesz zablokować konkretny plik według jego nazwy i rozszerzenia.
rozkazuj, pozwól, odmów
Odmowa od wszystkich
W tym przykładzie dostęp do pliku config.inc.php jest zabroniony.

Hasło katalogu: AuthName „Strefa prywatna”
Podstawowy typ uwierzytelniania
wymagają prawidłowego użytkownika
Wartość AuthName zostanie wyświetlona odwiedzającemu i może zostać wykorzystana do wyjaśnienia żądania autoryzacji. Wartość AuthUserFile wskazuje lokalizację, w której przechowywany jest plik z hasłami dostępu do tego katalogu. Ten plik został utworzony specjalna użyteczność htpasswd.exe.

Przykładowo w katalogu chronionym hasłem tworzymy następujący plik .htaccess: AuthName "Tylko dla zarejestrowanych użytkowników"
Podstawowy typ uwierzytelniania
PlikAuthUserFile /pub/site.ru/.htpasswd
wymagają prawidłowego użytkownika
W tym przykładzie, gdy odwiedzający poprosi o katalog, przeczyta frazę „Tylko dla zarejestrowanych użytkowników”; plik z hasłami dostępu powinien znajdować się w katalogu /pub/site.ru/ i mieć nazwę.htapasswd. Katalog jest określany z katalogu głównego serwera; jeśli określisz katalog niepoprawnie, Apache nie będzie mógł odczytać pliku .htpasswd i nikt nie będzie miał dostępu do tego katalogu.

Hasło tylko do 1 pliku:wto 09 lutego 2010 15:44:59 GMT+0300
Podobnie jak w przypadku hasła całego katalogu, możesz umieścić hasło tylko w 1 pliku.
Przykład ustawienia hasła do pliku private.zip:
AuthName "Strefa użytkowników"
Podstawowy typ uwierzytelniania
PlikAuthUserFile /pub/home/your_login/.htpasswd

Hasło dla grupy plików:
Podobnie używanie , możesz ustawić hasła w oparciu o maski plików.
Przykład ustawienia hasła dostępu do wszystkich plików z rozszerzeniem „sql”:

AuthName "Strefa użytkowników"
Podstawowy typ uwierzytelniania
PlikAuthUserFile /pub/home/your_login/.htpasswd

W dzisiejszych czasach, aby zorganizować pracę zdecydowanej większości stron w sieci, Serwer WWW Apache. Ma trochę mniejszą wydajność, ale jest bardzo łatwy w konfiguracji i ma wielka ilość możliwości.

Serwer WWW Apache można skonfigurować nie tylko w głównym pliku konfiguracyjnym, ale także poprzez pliki .htaccess. Pliki te znajdują się w określone foldery i powiedz serwerowi WWW, jak ma się zachowywać w tym folderze i jego podkatalogach.

Konfigurowanie pliku htaccess jest bardzo podobne do konfigurowania głównego pliku konfiguracyjnego Apache. Ale jest trochę inaczej. Za pomocą tego pliku możesz skonfigurować przekierowania, zmiany wewnętrznego adresu URL, prawa dostępu, autoryzację hasłem i wiele więcej. W dzisiejszym artykule przyjrzymy się, jak poprawnie skonfigurować htaccess dla Twojego serwera.

Zaczęliśmy już ten temat w jednym z poprzednich artykułów, ale dzisiaj odświeżymy trochę informacje i przyjrzymy się bliżej konfiguracji htaccess.

Wszystkie dyrektywy z pliku htaccess są wykonywane dokładnie tak samo, jakby były umieszczone w globalnym pliku konfiguracyjnym, tylko wewnątrz dyrektywy . Nie pozwala ci się zmienić ustawienia ogólne, ale możesz bardzo precyzyjnie dostosować zachowanie programu w folderach, do których masz prawa dostępu.

Ogólna składnia dyrektyw jest bardzo prosta, są to pary poleceń i ich opcji oddzielonych spacją, na przykład:

Parametr polecenia 1 parametr 2 flagi

Samych poleceń jest całkiem sporo i przyjrzymy się im na przykładach wykonywanych przez nie działań. Oprócz samych poleceń można tu wykorzystać struktury zagnieżdżone, np. do aktywacji modułów lub sprawdzenia dostępności konkretnego modułu. Przejdźmy teraz bliżej do tego, jak to się robi prawidłowe ustawienie htaccess. Zacznijmy od najprostszych kroków.

Konfigurowanie dostępu htaccess

Dość często htaccess służy do kontrolowania dostępu do folderu. Do kontroli dostępu służą trzy polecenia:

  • zamówienie- zamówienie;
  • zaprzeczyć- zakazać;
  • umożliwić- umożliwić.

Po pierwsze, korzystając z opcji kolejności, należy wskazać, w jakiej kolejności będą wykonywane dyrektywy; tylko to polecenie ma znaczenie i nie ma znaczenia, w jakiej kolejności są one umieszczone w pliku.

Następnie za pomocą dyrektywy zezwolenia lub odmowy zezwalamy lub odmawiamy dostępu do folderu z określonych adresów. Na przykład, aby wyłączyć wszystko, co musisz dodać do htaccess:

Zamówienie odmowy, zezwolenie
Odmowa od wszystkich

Ale możemy również zezwolić na dostęp tylko z sieci lokalnej:

Zamówienie odmowy, zezwolenie
Odmowa od wszystkich
Zezwól na 192.168.0.

Jeśli określono opcję deny,allow, sprawdzenie zostanie wykonane w tej kolejności. Najpierw wszystkie dyrektywy zaprzeczają, następnie wszystkie dyrektywy zezwalają, a jeśli żaden z warunków nie jest spełniony, żądanie jest pomijane.W przypadku opcji zezwolenia, odmowy takie żądanie zostanie domyślnie odrzucone. Na przykład poprzedni przykład można zapisać w następujący sposób:

Zamów, zezwól, odmów
Zezwól na 192.168.0.

Modyfikacja adresu URL w htaccess

Najczęstszym zastosowaniem htaccess jest modyfikacja adresu URL w czasie wykonywania lub przekierowań. Za tę funkcjonalność odpowiada moduł mod_rewrite, który jest zwykle włączony w większości konfiguracji Apache.

Modyfikacja adresu URL w htacces odbywa się za pomocą trzech dyrektyw, są to Przepisz bazę, który określa prefiks adresu, PrzepiszWarunek sprawdza zgodność oraz Przepisz regułę- zmienia adres URL zgodnie z wyrażeniem regularnym, jeśli wszystkie pasujące reguły są zgodne.

Najpierw musisz włączyć Mod_Rewrite, w przypadku, gdy moduł nie jest jeszcze aktywny:

Przepisz silnik włączony

Wskazujemy, że root powinien być użyty jako przedrostek adresu URL:

I automatycznie zamienimy adres URL z Index.html na Index.php, pamiętaj, że oryginalny adres URL to ścieżka do żądanego pliku w stosunku do lokalizacji pliku htaccess:

Przepisz regułę indeks.html/index.php

W celu efektywniejszej zamiany można użyć wyrażeń regularnych, które składają się ze znaków specjalnych i zmiennych oraz zwykłych znaków i cyfr. Spójrzmy na główne Specjalne symbole:

  • ^ - początek linii;
  • $ - koniec linii;
  • . - dowolny symbol;
  • * - dowolna liczba dowolnych symboli;
  • ? - jeden konkretny symbol;
  • - ciąg znaków, na przykład od 0 do 9;
  • | - symbol lub wybrana jest ta lub inna grupa;
  • () - służy do wybierania grup znaków.

W wyrażeniach regularnych htaccess można także używać zmiennych z danymi uzyskanymi z nagłówków żądań, na przykład:

  • %(HTTP_USER_AGENT)- pole User-Agent, które jest przesyłane przez przeglądarkę użytkownika;
  • %(REMOTE_ADDR)- adres IP użytkownika;
  • %(REQUEST_URI)- żądany URI;
  • %(QUERY_STRING)- parametry zapytania po znaku ?.

Są to najczęściej używane zmienne, ale jest ich o wiele więcej, resztę znajdziesz w oficjalnej dokumentacji. Wyrażenia regularne otwierają więcej szerokie możliwości na przykład możesz zastąpić html php na wszystkich stronach:

Przepisz silnik włączony;
Przepisz bazę/;

Jeszcze większą elastyczność daje dyrektywa RewriteCond, możesz wybrać na jakie adresy chcesz zastosować modyfikację, np. przedefiniujemy dane tylko dla wersji z www:

Przepisz bazę/;
Przepisz stan % (HTTP_HOST) ^www.site.ru$
Przepisz regułę ^(.*)\.html$ $1.php

W ten sposób możesz wykonywać dowolne przekształcenia swoich adresów URL bez konieczności przekierowywania gdziekolwiek. Ale następnie przyjrzymy się, jak tworzyć przekierowania.

Konfigurowanie przekierowań w htaccess

Konfigurowanie przekierowań htaccess odbywa się w podobny sposób, przy użyciu tego samego modułu mod_rewrite, tyle że teraz zamiast modyfikować adres URL, podajemy flagę konieczna akcja i kod przekierowania.

Najprostsze przekierowanie można wykonać bez mod_rewrite, używając następującej linii:

Przekieruj 301 /index.html http://www.site.ru/index.php

Ale zazwyczaj potrzebujesz przekierowań o szerszym działaniu. Wszystko wygląda bardzo podobnie, tylko teraz używamy flagi do ignorowania wielkości liter, [L] do zatrzymania przetwarzania i [R] do przekierowania. Na przykład przekierowanie htaccess z wersji bez www do domeny z www:

PrzepiszCond %(HTTP_HOST) ^site\.ru$
RewriteRule ^(.*)$ http://www.site.ru/$1

Wartość R=301 oznacza kod przekierowania, który zostanie zwrócony klientowi, możesz użyć 301, 302 itd. Przekieruj htaccess za pomocą domena www dla domeny bez prefiksu będzie wyglądać następująco:

Przepisz stan %(HTTP_HOST) ^www.site\.ru$
RewriteRule ^(.*)$ http://site.ru/$1

Przekierowanie możesz wykonać w ten sam sposób:

Przepisz regułę ^stary_adres /nowy_adres/$1

Przekieruj z wersji http na https:

Przepisz stan %(PORT_SERWERA) ^80$
PrzepiszWarunek %(HTTP) =wł
RewriteRule ^(.*)$ https://site.ru/$1

Konfigurowanie stron błędów w htaccess

Jeśli podczas generowania strony wystąpią jakiekolwiek błędy, oznacza to problemy z serwerem internetowym krótka wiadomość i kod błędu. Ale dla użytkowników będzie znacznie jaśniejsze, co się dzieje, jeśli zrobisz to dla każdego błędu osobna strona ze zdjęciami i pełnym wyjaśnieniem.

Skonfigurowanie htaccess dla tego elementu będzie bardzo przydatne. Możesz użyć dyrektywy ErrorDocument. Za jego pomocą możesz ustawić strony HTML pod kątem błędów 4xx i 5xx. Na przykład dla 404:

Dokument błędu 404 http://site.ru/error/404.shtml
Dokument błędu 403 http://site.ru/error/403.shtml
Dokument błędu 401 http://site.ru/error/401.shtml
Dokument błędu 500 http://site.ru/error/500.shtml

Buforowanie w htaccess

Przeglądarka umożliwia przechowywanie obrazów, plików skryptów, stylów i innych plików multimedialnych w swojej pamięci podręcznej określony czas. Czas życia pamięci podręcznej jest ustawiany przez serwer WWW za pomocą specjalnych nagłówków. Można je skonfigurować za pomocą modułu wygasania.

Najpierw aktywuj moduł i ustaw domyślny okres buforowania:

Wygasa jako aktywny w dniu
WygasaDomyślnie „dostęp plus 1 miesiąc”

Teraz możemy skonfigurować buforowanie dla każdego typu pliku MIME:

ExpiresByType tekst/html „dostęp plus 1 miesiąc 15 dni 2 godziny”
ExpiresByType image/gif „dostęp plus 5 godzin 3 minuty”
Obraz ExpiresByType/x-icon „dostęp plus 2592000 sekund”

W pierwszym wierszu wskazujemy to strony HTML należy uważać za ważny przez miesiąc, 15 dni i dwie godziny od momentu załadunku. Dostępne są następujące typy plików:

  • obraz/ikona x;
  • obraz/jpeg;
  • obraz/png;
  • obraz/gif;
  • aplikacja/x-shockwave-flash;
  • tekst/css;
  • tekst/javascript;
  • aplikacja/javascript;
  • aplikacja/x-javascript;
  • tekst/html;
  • aplikacja/xhtml+xml;

Aby mieć pewność, że taka konstrukcja nie spowoduje błędów, zawiń ją w if:


Kompresja plików w htaccess

Do kompresji w Apache możesz użyć modułu deflate. Tutaj wystarczy po prostu wyświetlić listę typów plików MIME, które należy skompresować. Na przykład:

AddOutputFilterByType DEFLATE tekst/html tekst/zwykły tekst/aplikacja XML/aplikacja XML/xhtml+xml tekst/css tekst/aplikacja JavaScript/aplikacja JavaScript/x-javascript

Możesz także dołączyć instrukcję if, aby sprawdzić, czy moduł jest obsługiwany:


wnioski

W tym artykule przyjrzeliśmy się, jak skonfigurować plik htaccess dla prawidłowe działanie Twoja strona. Wszystkie czynności nie są tak trudne do wykonania. Wystarczy skopiować kilka linijek i poprawić je pod swoje potrzeby. Jeśli masz jakieś pytania, zadaj je w komentarzach!

Na koniec oferuję film z przeglądem pliku konfiguracyjnego Apache:

Pełna obsługa dyrektyw .htaccess jest dołączona...

Odnowienie domeny 199-00 RUR

Materiał ten jest jednym z najważniejszych, dlatego polecam zwrócić na niego szczególną uwagę.

W wyrażeniu regularnym można używać dowolnych znaków drukowalnych i spacji, ale niektóre znaki mają specjalne znaczenie:

  • Nawiasy () służą do oddzielania grup znaków.

    Znak ^ oznacza początek linii.

    Znak $ oznacza koniec linii.

    Symbol. oznacza dowolny znak.

    Symbol | oznacza alternatywę. Na przykład wyrażenia „A|B” i „(ABC|DEF)” oznaczają odpowiednio „A lub B” i „ABC lub DEF”.

    Symbol? jest umieszczany po znaku (lub grupie znaków), który może występować lub nie. Na przykład wyrażenie „jpe?g” będzie pasować zarówno do ciągu „jpg”, jak i ciągu „jpeg”. Przykład wyrażenia zawierającego grupę znaków: „super-(puper-)?site”.

    Znak * jest umieszczany po znaku (lub grupie znaków), który może być nieobecny lub występować nieograniczoną liczbę razy z rzędu. Na przykład wyrażenie „jpe*g” dopasowuje ciągi „jpg”, „jpeg” i „jpeeeeeeg”.

    Znak + działa podobnie do znaku *, z tą tylko różnicą, że poprzedzający go znak musi wystąpić przynajmniej raz. Na przykład wyrażenie „jpe+g” dopasowuje ciągi „jpeg” i „jpeeeeg”, ale nie „jpg”.

    Nawiasy kwadratowe służą do wymieniania prawidłowych znaków. Na przykład wyrażenie „” jest równoważne wyrażeniu „a|b|c”, ale opcja z nawiasami kwadratowymi jest zwykle szybsza. Możesz używać zakresów w nawiasach: na przykład wyrażenie „” jest równoważne wyrażeniu „”. Jeżeli znaki w nawiasach kwadratowych zaczynają się od ^, oznacza to dowolny znak inny niż te wymienione w nawiasach. Na przykład wyrażenie „[^0-9]+” oznacza ciąg dowolnych znaków z wyjątkiem cyfr.

    Symbol \ jest umieszczany przed znakami specjalnymi, jeśli są one potrzebne w ich oryginalnej formie. Na przykład wyrażenie „jpe\+g” pasuje tylko do jednego ciągu „jpe+g”.

    {3,9} - aparat ortodontyczny oznacza zakres liczby znaków, w tym przypadku dopuszczalne jest od 3 do 9 znaków, długość ciągu znaków musi być równa lub większa niż 3 równa lub mniejsza niż 9 znaków. Głównie używane. Przykład sprawdzania ciągu Żądanie HTTP wysyłane przez przeglądarkę do serwera w celu sprawdzenia, czy jej treść pasuje do określonego wzorca:
    ♳ RewriteCond %(THE_REQUEST) ^(3,9)\ /index\.php\ HTTP/
    ♴ załóżmy, że zażądaliśmy strony indeksowej na serwerze %(THE_REQUEST) = "GET /index.html HTTP/1.1"
    ♵ w tym przypadku czytamy linię źródłową zawierającą nawiasy klamrowe w następujący sposób: „beginning_of_received_dataGETspace/index.phpspaceHTTP/”
    ♶ tj. Może to być „GET” lub może to być „POST”, mogą istnieć inne wartości... tylko symbole, w zależności od tego, czego i jak żądamy pliku Index.php na serwerze.

    Wszystko po symbolu „#” jest uważane za komentarz.

Powtarzam jeszcze raz, że dla dalszego pomyślnego zrozumienia opisu, przykładów .htaccess i jego konfiguracji, ta informacja po prostu konieczne!!!

Ostatnio wydane domeny z PR i TIC:

Usługa http://reg.ru - największy rejestrator hostingu i domen umożliwia złożenie wniosku o rejestrację nazwy domeny, która została niedawno zwolniona przez poprzedniego Administratora. Zwolnione domeny często mają wysokie wskaźniki TIC i PR i mogą być interesujące do nabycia.

Wydano domeny RU z TIC:
Dostępne domeny premium:

Objętość informacji: 5805 bajtów