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
Proponowałbym zapoznanie się z dyrektywą RemoveHandler która można sobie spokojnie na DH w .htaccess użyć ;) ułatwia życie…
Tego nie znalem ;)
Czlowiek ciagle uczy sie nowych rozwiazan.
Reczywiscie ladnie dziala, dzieki za pomoc :)