Apache udostępnia cały szereg tzw. dyrektyw blokowych (ang. block directives). Dyrektywy te pozwalają na ograniczenie innych zawartych w nich dyrektyw określonych dla plików, katalogów czy serwerów wirtualnych. Dyrektywy blokowe stanowią, więc rodzaj kontenera dla innych dyrektyw, które są wykonywane tylko i wyłącznie w obrębie danej dyrektywy blokowej i są one niezwykle istotne dla administrowania serwerem.
Dyrektywa blokowa na następującą składnie:
<dyrektywa blokowa>
</dyrektywa blokowa>
Poniżej przedstawię dyrektywy blokowe oraz dyrektywy używane wewnątrz dyrektyw blokowych przez serwer Apache.
<VirtualHost>
Dyrektywa blokowa używaną przez Apache do definiowania tzw. serwerów wirtualnych. Jeśli na przykład mamy domenę o nazwie moja_firma.com.pl i chcemy utworzyć oddzielna stronę dla biura w tej firmie np. biuro.moja_firma.com.pl to właśnie do tego celu używamy <VirtualHost>.
Dostępne dyrektywy:
- ServerAdmin – adres emal administratora serwera wirtualnego
- DocumentRoot – ścieżka dostępu do katalogu z plikami serwera wirtualnego
- SerwerName – nazwa domeny serwera wirtualnego
- ErrorLog – ścieżka do pliku error.log w którym zapisywane SA błędy w działaniu serwera
- TransferLog – ścieżka do pliku acces.log
Przykład:
<VirtualHost biuro.moja_firma.com.pl>
ServerAdmin aminek@moja_firma.com.pl
DocumentRoot /usr/www_virtual/biuro
SerwerName biuro.moja_firma.com.pl
ErrorLog /usr/www_virtual/biuro/logs/error_log
TransferLog /usr/www_virtual/biuro/logs/access_log
</VirtualHost>
Kolejne trzech dyrektyw blokowych, (Directory, Files, Location), zostaną przedstawione w kolejności rosnącej, co oznacz ze dyrektywa Directory może zostać zmodyfikowana przez Files, a ta musi ustąpić pierwszeństwa Location.
<Directory> i <DirecoryMatch>
Zapis:
<Directory Nazwa_katalogu>
</Directory>
Dyrektywa ta pozwala na ograniczenie zasięgu działania dyrektyw do wybranego katalogu lub grupy katalogów. Nazwa katalogu może zawierać symbole wieloznaczności „?” (dowolny znak) i „*” (dowolny ciąg dowolnych znaków), a również nawiasy kwadratowe ([ ]), służące do definiowania grup znaków. Na przykład [a-d] oznacza dowolny znak z ciągu a, b, c, d. Umieszczenie tyldy (~) na początku nazwy katalogu pozwala na użycie wyrażeń regularnych.
Wyrażenia regularne (ang. regular expressions) to wzorce, które opisują łańcuchy symboli. Teoria wyrażeń regularnych jest związana z teorią tworzenia tzw. języków naturalnych. Wyrażenia regularne mogą określać zbiór pasujących łańcuchów, mogą również wyszczególniać istotne części łańcucha.
Dyrektywa <DirectoryMatch> działa tak samo jak <Direktory>, tj. akceptuje definicję nazwy katalogu w postaci wyrażeń regularnych, tak więc zapis <Directory ~/katalog> i <Directory /katalog> są identyczne.
Dyrektywy te można użyć w konfiguracji głównej oraz serwerach wirtualnych.
<Files> i <FilesMatch>
Zapis:
<Files nazwa_pilku>
</Files>
Dyrektywy tej używa się dla ograniczenia określonego pliku podanego w parametrze nazwa_pliku. Dyrektywa <FileMatch> używana jest wraz z wyrażeniem regularnym nie poprzedzonym znakiem tyldy.
Aby ograniczyć obsługiwanie przez serwer tylko plików graficznych z rozszerzeniem *.gif, *.jpg musimy użyć dyrektywy <FileMatch „.gif|jpg”>.
Dyrektywę tą używamy w konfiguracji głównej, serwerach wirtualnych oraz plikach .htaccess.
<Location> i <LocationMatch>
Zapis:
<Location adres-url>
</Location>
Użycie tych dyrektyw pozwala na ograniczenia zasięgu działania bloku dyrektyw do zadanych adresów URL.
Dyrektywy te używa się w konfiguracji głównej oraz serwerach wirtualnych.
<IfDefine>
Zapis:
<IfDefine nazwa>
</IfDefine>
Dyrektywa ta pozwala na warunkowe uaktywnienie bloku dyrektyw w przypadku uruchomienia Apache z opcja –D nazwa. Pozwala to na zamkniecie w osobnym pliki httpd.conf osobnych wariantów konfiguracyjnych. Przydaje się to głównie podczas tworzenia i testowania tworzonych witryn. W przypadku regularnie działających witryn nie jest to stosowane.
<IfModule>
Zapis:
<IfModule [!]Nazwa_modułu>
</IfModule>
Dyrektywa pozwala na warunkowe uaktywnienie bloku dyrektyw w zależności od tego czy moduł o danej nazwie jest dołączony (podczas kompilacji lub dynamicznie przez załadowanie biblioteki dll) do programu Apache. Poprzedzenie nazwy modułu wykrzyknikiem powoduje uaktywnienie modułu, jeśli nie został on dołączony do programu.