Pomocny .htaccess

21 sierpnia 2007

Dzięki Ci Panie za .htaccess, który w wielu przypadkach nas ratuje ;)

Czasem, gdy serwer w konfiguracji nie ma zdefiniowanych odpowiednich mime-type dla standardowych rodzajów plików, mogą pojawić się różne nieprzewidziane sytuacje.
W większości wypadków ratuje dodanie odpowiedniego wpisu do .htaccess, ale czasami różnie to bywa.

Na dreamhoscie dziwnym trafem wiele typowo standardowych plików nie ma ustawionego pożądanego typu, chociażby dla phps, czy xhtml.

Problem mnie spotkał z xhtml, gdzie index.xhtml nie był uznawany za domyślną stronę i serwer listował zawartość katalogu. Oczywiście dodanie odpowiedniego wpisu do .htaccess:

DirectoryIndex index.xhtml

rozwiązało sprawę z listowaniem, ale wtedy jeszcze inne niespodzianki dały o sobie znać. Problemy te na serwerze z ustawionym domyślnie mime-type dla xhtml i dodanym index.xhtml jako jeden z domyślnych plików nie występowały.

Dziś miałem inny problem.
Wrzuciłem sobie na serwer skrypty w perlu, aby każdy mógł sobie pobrać. W tym celu dorzuciłem do .htaccess linijkę:

AddType text/plain pl

Żeby wszystko było ok.

I nic z tego nie wyszło, serwer próbuje interpretować pliki, skrypty lub coś innego z nimi zrobić, w wyniku, czego wypluwa errorem 500 – Internal Server Error.

Zdenerwowałem się trochę.

Szybkie i proste rozwiązanie to skorzystanie z mod_rewrite i PHP.
Do .htaccess, dorzucamy regułki:

RewriteEngine on
RewriteRule (.*\.pl)$ .pl.php?f=$1

Plik .pl.php zawiera kod:

<?php
 
$filename = str_replace ('../', '', (string)$_GET['f']);
 
if (is_readable($filename)) {
	header('Content-Type: text/plain; charset=utf-8');
	readfile($filename);
} else {
	header('HTTP/1.0 404 Not Found');
	echo '<h1>Not Found</h1>';
}
 
?>

I walla, działa jak powinno ;)
Plik skryptu w nazwie posiada . na początku, aby nie był wyświetlany przy listowaniu katalogu przez apache’a, ale to pewnie wszyscy wiedzą.

Wyświetlaną treść strony w przypadku nie znalezienia pliku lub plik nie do odczytu, możemy sobie zmienić na taką, jaka generowana jest przez serwer, wtedy z zewnątrz nie będzie można zauważyć działania skryptu. Wszystko będzie wyglądało, jakby było prawdziwe :P

Podobne notatki:

Może zainteresują Cię również następujące, pododbne notatki:

Komentarze i nawiązania (2)

Kanał RSS komentarzy

  1. Proponowałbym zapoznanie się z dyrektywą RemoveHandler która można sobie spokojnie na DH w .htaccess użyć ;) ułatwia życie…

  2. Tego nie znalem ;)
    Czlowiek ciagle uczy sie nowych rozwiazan.

    Reczywiscie ladnie dziala, dzieki za pomoc :)

Dodaj swój komentarz

Możesz użyć tych tagów XHTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Jeśli chcesz wstawić kilku linijkowy fragment kodu, użyj tagów <pre lang="x"></pre> (gdzie x język kodu np. cpp, perl, html). W ten sposób kod zostanie odpowiednio sformatowany i pokolorowany przez system.

Uwaga!

Na tym blogu działa system cache oraz filtr antyspamowy. Twój komentarz może być widoczny na stronie z pewnym opóźnieniem. Proszę o cierpliwość. Jeśli utraciłeś już wszystkie jej zasoby poinformuj mnie o tym, być może system uznał Cię za spamera ;)