![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 706 Pomógł: 108 Dołączył: 12.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witajcie,
mam plik .htaccess zdefiniowany następująco: Kod RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^.+$ index.php?path=$0 [L] Chcę, by przepisywane było wszystko, poza istniejącymi plikami. Foldery mają też być przepisane, bo nie zależy mi na dostępach do folderów bez podania pliku. Wszystko działa, ale jest pewien problem. Po wejściu na link z nazwą taką, jak istniejący folder, widoczna w linku staje się zmienna GET. PRZYKŁAD: Mam folder images. Po wejściu na http://localhost/images skrypt działa prawidłowo, ale w pasku adresu jest http://localhost/images/?path=images. Dla nazw niepokrywających się z folderami wszystko jest w porządku. Co jest przyczyną tego zachowania? EDIT Dodam, że dla http://localhost/images/ (ze slashem na końcu) problem nie występuje. Ten post edytował croc 6.11.2011, 17:11:15 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Spróbuj dodać jeszcze:
Kod RewriteCond %{REQUEST_FILENAME} !-d To powinno omijać także foldery -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
To nie ominie folderu niestety. Przyczyną może być to że apache najpierw przeszukuje dysk czy taki folder istnieje, a dopiero potem dopasowuje regułki zdefiniowane w htaccess. W przypadku kiedy podajesz slash na końcu, od razu szuka katalogu, tyle że u ciebie w rewritecond pominięte są katalogi i trzeba podać ścieżkę do pliku, więc szuka najpierw katalogu, potem pliku, nie znajduje pliku i dalej działa regułka z htaccess, tyle że już apache przekierowuje cię do katalogu, bo taki katalog znalazł. Nie wiem czy tak jest na pewno, ale tak mi się wydaje po przeanalizowaniu szybkim że tak to może działać. Rozwiązaniem może być stworzenie innego katalogu obrazów, albo innej regułki..
Ten post edytował by_ikar 7.11.2011, 09:56:46 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 706 Pomógł: 108 Dołączył: 12.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Celowo uniknąłem tego wpisu:
Kod RewriteCond %{REQUEST_FILENAME} !-d Tak jak wspomniałem w pierwszym poście, nie chcę blokować żadnych nazw, nawet takich pokrywających się z istniejącymi folderami. Bezpośredni dostęp do folderów jest mi po prostu niepotrzebny. Zależy mi, by każda nazwa dopasowana do wzorca kierowana była do index.php, oczywiście za wyjątkiem tych, które pokrywają się z rzeczywistymi plikami. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Ok racja mój błąd - nie doczytałem tego dokładnie (wybaczcie chory jestem :/).
Mam pewien pomysł, który może pomóc ale nie musi - nie mam jak sprawdzić ale co by było gdybyś dał coś takiego: Kod RewriteEngine On RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.+[^/]{1}$ $0/ [L] // Można dać też flagę [R] zobaczyć która lepiej będzie działać RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^.+$ index.php?path=$0 [L] Jeśli dobrze napisałem to powinno być ok - co to robi? Pisałeś że jak jest "/" na końcu to działa bez zarzutu - to powinno dodawać "/" na koniec tylko do prawdziwych folderów i przekierować na adres "obsługiwalny" - nie wiem tylko jak twój skrypt sobie z tym poradzi i jakie dane dostanie podczas dodawania tego "/" - zależy to pewnie od flagi HTH! ![]() -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 12:54 |