9 Oct
Oto obiecana druga część tutorialu poświęconego podstawom stosowania pliku .htaccess do ustawiania konfiguracji serwera Apache. Zapraszam do lektury i do komentowania!
Wymuszanie wersji interpretera PHP
Po pierwsze: musisz mieć na serwerze zainstalowane zarówno PHP4 jak i PHP5. Dopiero wtedy możesz wybierać pomiędzy wersjami PHP. Po drugie musisz wiedzieć jak obie wersje PHP zostały zainstalowane (moduł Apache’a czy CGI). zazwyczaj jest tak, że PHP4 jest jako moduł Apache’a (i jest domyślnym interpreterem) a PHP5 jako CGI (ale może być też na odwrót, mu zakładamy pierwszy wariant).
Aby wymusić PHP5:
AddHandler php5-cgi .php
Wtedy pliki z rozszerzeniem .php będą interpretowane przez PHP5 (działający jako CGI).
W ten sposób możemy teoretycznie wymusić interpretowanie przez PHP plików z dowolnym rozszerzeniem, np. .aspx i udawać, że mamy serwer oparty na systemie Windows z .NET :-).
Włączanie i wyłączanie safe_mode
Aby włączyć safe_mode (zalecane):
php_flag safe_mode on
lub
php_value safe_mode "1"
Aby wyłączyć safe_mode:
php_flag safe_mode off
lub
php_value safe_mode "0"
Podałem po dwie możliwości bo zależy to od serwera. UWAGA! Może być tak, że nie masz możliwości zmiany ustawień safe_mode- wtedy musisz skontaktować się z administratorem swojego serwera.
Włączanie i wyłączanie register_globals
Aby włączyć register_globals (chroń nas Panie Boże od register_globals! ;-) ):
php_flag register_globals on
Aby wyłączyć register_globals (zalecane):
php_flag register_globals off
Zmiana domyślnej strony głównej
Aby ustawić domyślną stronę główną (domyślnie wyświetlaną) w danym katalogu wystarczy użyć na przykład takiego wpisu:
DirectoryIndex home.html index.htm index.html index.php
Co on oznacza? Załóżmy, że plik .htaccess zawierający taki wpis wgraliśmy do katalogu dostępnego w poziomu www pod adresem http://www.jakasdomena.pl/katalog/. Jeśli w tym katalogu będziemy mieli plik index.php (i żaden inny) to wpisaniu w przeglądarce adresu http://www.jakasdomena.pl/katalog/ zostanie wyświetlony właśnie plik index.php. Jeśli zaś dogramy dodatkowo plik index.html to plik index.php nie będzie już naszą stroną główną tylko plik index.html. Jeśli znowu dogramy kolejny plik, tym razem index.htm to ten właśnie plik zostanie naszą stroną główną. Jaki z tego wniosek? Otóż kolejność plików wymienionych w naszym wpisie do .htaccess decyduje o priorytecie interpretacji plików.
Włączanie SSL
Czasem zachodzi potrzeba wymuszenia na użytkowniku naszej witryny korzystania z niej w bezpiecznym połączeniu. Najprostszym i chyba najskuteczniejszym rozwiązaniem jest przekierowanie użytkownika przy pomocy poniższego kodu (wymaga mod_rewrite):
RewriteEngine On
RewriteCond %{SERVER_PORT} !443
RewriteRule ^(.*)$ https://www.naszawitryna.pl/$1 [R,L]
Powyższy przykład dotyczy całej witryny – plik .htaccess należy wgrać do katalogu głównego naszej witryny.
Pierwsza linijka uruchamia mechanizm przepisywania, czyli mod_rewrite. Druga sprawdza czy obecne połączenie odbywa się po porcie 443 – jest to port zarezerwowany dla połączeń SSL. Jeśli połączenie nie odbywa się po porcie (dlatego jest wykrzyknik przed numerem portu – oznacza on zaprzeczenie) to Apache uruchamia polecenie z trzeciej linijki, czyli przerzuca użytkownika na protokół https.
Jeśli byśmy chcieli zastosować SSL dla wybranego katalogu to musimy plik .htaccess wgrać do interesującego nas katalogu i zmienić zawartość pliku .htaccess na następującą (też wymaga mod_rewrite):
RewriteEngine On
RewriteCond %{SERVER_PORT} !443
RewriteCond %{REQUEST_URI} naszkatalog
RewriteRule ^(.*)$ https://www.naszawitryna.pl/naszawitryna/$1 [R,L]
Jeszcze szybszą wersją jest:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Tutaj Apache uruchamia mod_rewrite, sprawdza czy połączenie jest w protokole https (niezależnie od użytego portu), jeśli nie jest to przekierowuje użytkownika na https. Zwróć uwagę, że nie używamy tu konkretnych nazw domen i katalogów tylko korzystamy ze zmiennych Apache’a. Dzięki temu jest to uniwersalny plik do użycia w dowolnym katalogu dla dowolnej witryny.
UWAGA! W zależności od konfiguracji serwera może zajść potrzeba dopisania na początku pliku .htaccess następującego wpisu:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
Obrona przed botami i ripperami
Zaglądasz do logów serwera i widzisz, że jakiś bot regularnie odwiedza Twoją witrynę i marnuje ci pasmo, a być może kradnie treści albo, nie daj Boże, zbiera adresy e-mail aby potem zasypywać Cię spamem. Co z tym zrobić? Najpierw przejrzyj logi i spisz sobie nazwy botów, tzw. User Agent. Następnie przygotuj taki oto wpis do liku .htaccess:
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^BadBot [OR]
RewriteCond %{HTTP_USER_AGENT} ^EvilScraper [OR]
RewriteCond %{HTTP_USER_AGENT} ^FakeUser
RewriteRule ^(.*)$ http://spadaj.stad.pl/
Pierwsza linijka uruchamia mod_rewrite (to już wiemy). Druga, trzecia i czwarta sprawdza czy User Agent zawiera nazwę spambota, którego chcemy wyprowadzić w pole. Ostatnia linijka przekierowuje drania na nieistniejącą witrynę. Zwróć uwagę, że na końcu każdej linijki (OPRÓCZ OSTATNIEJ) znajduje się ciąg [OR].
Problem z botami jest jednak taki, że często podszywają się pod inne User Agenty, np. pod zwykłe przeglądarki internetowe albo wyszukiwarki. Wtedy trzeba pokombinować z blokowaniem dostępu wg numeru IP lub nazwy hosta.
A pod tym adresem znajdziesz listę botów, które warto blokować. Lista ta zawiera także programy do pobierania contentu i download acceleratory, musisz więc sam zdecydować czy chcesz jej użyć w całości. Warto też zajrzeć tutaj.
Dodawanie typów Mime
MimeType to rozszerzenia zwracane przeglądarce WWW po wywołaniu znajdującego się na serwerze typu pliku. Powoduje to określoną reakcję po stronie przeglądarki np. wywołanie odpowiedniego programu obsługującego dany format. Większość popularnych rozszerzeń i typów jest już zdefiniowana w domyślnej konfiguracji serwera. Czasami zachodzi jednak potrzeba “wymuszenia” na przeglądarce otworzenia pliku za pomocą konkretnej aplikacji, bo np. brakuje odpowiedniej definicji w domyślnej konfiguracji serwera – zdarza się to na niektórych serwerach np. w przypadku plików .rar, albo z jakiś powodów chcemy wymusić wyświetlanie plików w innej aplikacji niż domyślna.
Jak to zrobić? Proste. Aby na przykład wymusić otwieranie plików .rar w aplikacji WinRAR (zamiast w przeglądarce internetowej w postaci niezrozumiałego tekstu co się niekiedy zdarza) wystarczy użyć takiego wpisu do .htaccess:
AddType application/x-rar-compressed rar
Zaś taki wpis:
AddType text/html .txt
spowoduje interpretację plików .txt jako dokumentów HTML.
Jeśli chcemy wymusić na przeglądarce pobieranie pliku (zamiast otwierania w przeglądarce lub domyślnej aplikacji) należy użyć następującego wpisu:
AddType application/octet-stream .doc .xls .pdf
Spowoduje on ściąganie na dysk użytkownika plików z rozszerzeniami .doc, .xls, .pdf.
Jeśli byśmy chcieli wymusić na przeglądarce interpretowanie jako dokumenty HTML WSZYSTKICH plików w danym katalogu należałoby posłużyć się takim wpisem:
ForceType text/html
Więcej o typach MIME: http://www.iana.org/assignments/media-types/
No i to by było na tyle. Za jakiś czas opublikuję trzecią część, w której jeszcze to i owo wyjaśnię ;-).
4 odpowiedzi for ".htaccess – podstawy (część II)"
Witam,
Kto jest w stanie mi pomóc w napisaniu przy użyciu RewriteRule komende pozwalająca na automatyczne przechodzenie z domen w postaci: https://www.domena1.pl/index.php?id=X oraz https://www.domena2.pl/index.php?id=X na odpowiednio http://www.domena1.pl/index.php?id=X oraz http://www.domena2.pl/index.php?id=X
Pozdrawiam i dziekuje za pomoc.
Witam!
Brakuje obiecanego arta o: “obrona przed hotlinkowaniem”… szkoda. Co do reszty – super :)
Przydatny thx !
Coś, co może być przydatne dla tworzenia przyjaznych linków w postaci
http://www.domena.pl/news/ID_NEWSA;TYTUL_NEWSA.html
RewriteEngine On
RewriteRule ^news/([0-9]+);(.+)?$ /news.php?newsid=$1
witam
a ja mam pytanie jak zrobić aby strona typu
http://www.strona.pl/news.php?newsid=66
była pokazywana jako http://www.strona.pl/news/ ??
z góry dzięki za wszelkie sugestie
pozdrawiam
piotr
Tu jest opis: http://www.webowe.pl/eleganckie-linki-seo-w-10-sekund/
tu macie jak się zabezpieczać przed hotlinkowaniem:
http://www.javascriptkit.com/howto/htaccess10.shtml
Zostaw odpowiedź
Musisz być zalogowany/zalogowana, aby móc wysłać komentarz.