problem z mod_rewrite

Problemy dotyczące programowania.

Moderatorzy: Moderatorzy, Administratorzy

Awatar użytkownika
ondreyos
Użytkownik
Posty: 331
Rejestracja: 2007-11-01, 17:31
Lokalizacja: Poznań

problem z mod_rewrite

Post autor: ondreyos »

Witam.

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]
Potem w PHP bawię się wyciąganiem z $_SERVER['HTTP_POST'] oraz ['REQUEST_URI'] potrzebnych informacji. Wszystko pięknie działa, ale......
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 :rotfl:

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.
ODPOWIEDZ