Pomocny .htaccess

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

2 przemyślenia nt. „Pomocny .htaccess”

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *