Apache HTTP Server |
Zamiast wałkować uzupełnianie listy typów MIME (które zwykle są kompletne) czy strony błędów (które zwykle można obsłużyć lepiej), warto się zająć czymś ważniejszym, jak pamięć podręczna i kompresja.
Cache - mod_expires
Moduł expires pozwala na manipulowanie pamięcią podręczną przeglądarki, poprzez modyfikowanie nagłówka Cache-Control. Poniższa konfiguracja sprawdza czy na serwerze zainstalowany jest interesująca nas funkcjonalność, jeśli tak to aktywuje go, a następnie określa wg MIME żywotność plików.<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
</IfModule>
IE - mod_headers
Headers to ogólne narzędzie do manipulacji nagłówkami zapytań.Interesującą propozycją, choć nastręczająca pewne problemy, jest dodanie X-UA-Compatible do zapytania, zamiast dokumenty
Tak to wygląda w HTML:
<meta name="X-UA-Compatible" content="IE=Edge;chrome=1" />Zamiast tego można użyć poniższą konfigurację wg wzorca białej listy, lub czarnej listy.
<IfModule mod_headers.c>
# Biała lista...
<FilesMatch "\.(html|php)$" >
Header set X-UA-Compatible "IE=Edge;chrome=1"
</FilesMatch>
# ...lub czarna lista
Header set X-UA-Compatible "IE=Edge;chrome=1"
<FilesMatch "\.(js|css|gif|png|jpe?g|pdf|xml|oga|ogg|m4a|ogv|mp4|m4v|webm|svg|svgz|eot|ttf|otf|woff|ico|webp|htc)$" >
Header unset X-UA-Compatible
</FilesMatch>
</IfModule>
Kompresja - mod_deflate
Bardzo ważnym modułem jest mod_deflate, który w locie kompresuje pliki.Po sprawdzeniu czy istnieje moduł istnieje ustawiamy filtr dla odpowiedzi, a następnie stosujemy go wg MIME. Zaznaczę że nie warto tego stosować np. przy plikach multimedialnych, które zwykle już są skompresowane.
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/css application/javascript
</IfModule>
Ładne linki - mod_rewrite
Ten temat jest akurat bardzo często poruszany, albo może znajdzie się tutaj coś więcej. Moduł rewrite służy do przepisywania/przekierowywania adresów.Aktualnie popularną sztuczką jest przekierowanie wszystkich zapytań do jednego pliku, daje to możliwość stosowania atrakcyjniejszych adresów.
Przykład zaczerpnąłem z Kohana Framework. Moduł jest uruchamiany, następnie zostaje ustawiony katalog bazowy. Pierwsze RewriteRule blokuje dostęp do wybranych katalogów - adres kierujący do jednego z nich nie jest przetwarzany przez kolejne warunki, a serwer zwraca błąd braku dostępu.
Kolejne linie to ustalenie, że jeśli plik (-f), lub folder (-d) istnieje to adres nie jest przepisywany, czyli jest do nich swobodny dostęp, a adres nie będzie przepisany.
Ostatnia linia bloku to skierowanie wszystkich zapytań do pliku index.php.
<IfModule mod_rewrite.c>Na większości serwerach wszystkie wyżej wymienione możliwości są dostępne, ale nie zaszkodzi być przygotowanym na brak modułów. Wszystkie omówione konfiguracje wrzuciłem do jednego pliku. Więcej informacji w temacie .htaccess warto szukać w dokumentacji Apache HTTP Server i na Stack Overflow.
RewriteEngine On
RewriteBase /
RewriteRule ^(?:admin|quest|modules|system)\b.* index.php/$0 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT]
</IfModule>
Brak komentarzy:
Prześlij komentarz