Na ogół gdy na forum pojawiają się posty związane z mod_rewrite, ludzie mają kłopot z instalacją. Ja się bawię w na wykupionym hostingu, więc to odpada, mam działający serwer. Problem razczej leży po mojej stronie. Przyznaje się, że zbyt dużego doświadczenia w robieniu przekierowań nie mam, więc pewnie po prostu popełniam jakiś głupi błąd. Ale przechodźmy do sedna. Oto plik .htaccess (wersja maksymalnie okrojona, zostawiłem tylko zupełne minimum potrzebne do zademonstrowania o co chodzi).
Kod: Zaznacz cały
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
wpisuję adres.pl/index.php - pojawia się index.php
wpisuję adres.pl/cos/gdzies/12345/ - też mam index.php
Ponieważ są linie RewriteCond, więc jak wpiszę adres.pl/obrazek.jpg - też pokaże się index.php (pliku obrazek.jpg nie ma), ale gdy wpiszę adres.pl/obrazek.gif, to zostanie on wyświetlony, gdyż takie cudo się znajduje na dysku (a dwie dyrektywy RewriteCond mają to sprawdzać).
I teraz problem właściwy:
wpisuję adres.pl/obrazek.jpg/gucio - pojawia się index.php - logiczne.
wpisuję adres.pl/obrazek.gif/gucio - wyskakuje 404...
Myślę, że sytuacja jest jasna Pytanie brzmi, czy jest możliwość, aby po dodaniu jakiejś ścieżki/czegokolwiek po adresie istniejącego pliku, nie wyskakiwał błąd 404, ale apache zachował się tak, jakby to było "zwyczajne" przekierowanie, totalnie niemające związku z rzeczywistą strukturą katalogów? Żeby było śmieszniej, jeśli zamiast nazwy pliku podam nazwę istniejącego katalogu, to mod_rewrite też działa zgodnie z oczekiwaniami - czyli wyświetla się index.php.
Mam nadzieję, że mimo późnej pory, jakoś udało mi się to napisać w miarę jasno
P.S. Udało mi się to obejść, sprawdzając fakt istnienia pliku z poziomu PHP, ale to jest prowizorka i obejście, a nie rozwiązanie problemu. Więc chętnie posłucham jakiś sugestii.