ďťż
Podstrony
|
telcocafeJak w temacie. Znalazłem na necie tutoriale wyrażeń regularnych, manuale dotyczące tworzenia .htacess ale nie udało mi się osiągnąć ani raz choćby czegoś zbliżonego do oczekiwanego efektu, więc z nadzieją zwracam się do Was. Chcę aby reguła nie działała, gdy w żądaniu będzie ścieżka do pliku .js (bez względu na to, czy będzie ona prawidłowa czy nie). Mój .htacess:RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d rewriteRule ^(.*)$ index.php?m=$1 [L,QSA] RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule (.+) index.php?m=$1 [L,QSA] Hmmm, czy mógłbyś mi opisać co wnosi ta modyfikacji tej linijki? :) Edit: niestety, po tej zmianie jest dalej tak samo jak było. Użytkownik Isaac from Vale edytował ten post 14 lipiec 2010, 14:00 Spróbuj dodać RewriteBase. Być może musisz ustawić inną ścieżkę.RewriteEngine On RewriteBase /A dalej jak w poprzednim przykładzie. Jeżeli nie działa, zresetuj serwer. Użytkownik Ferrari edytował ten post 14 lipiec 2010, 14:59 Teraz w ogóle nie działa, bo przekierowuje mnie do poprzedniego folderu, tzn głównego, bo .htacess i strona z której korzystam jest w podfolderze htdocs. Ja myślałem, żeby zrobić jakis warunek, że w QUERY_STRING nie może być .js na samym końcu stringa, ale nie umiem tego zapisać w .htacess. Akurat obydwa przykłady powinny działać, więc wina leży po stronie serwera, na którym uruchamiasz skrypt. Jaki to serwer? Spróbuj jeszcze takiego przykładu:Options +FollowSymLinks RewriteEngine On RewriteBase /htdocs/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .+ index.php?m=$0 [L,QSA] Użytkownik andrzej_aa edytował ten post 14 lipiec 2010, 15:10 U mnie dalej to samo. Korzystam z Apache. @adrzej_aa Twój kod wywala błąd serwera : ) Użytkownik Isaac from Vale edytował ten post 14 lipiec 2010, 15:13 No okej, ale jaka wersja? Jakiś pakiet? Jaki system? Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1 Co do systemu to uściślę, że Win 7 ;) Domyślam się, że to XAMPP, bo masz starszą wersję Apache. Nie wiem co może być nie tak, ale możesz użyć również takiego przykładu: Options +FollowSymLinks RewriteEngine On RewriteBase /htdocs/ RewriteRule .+\.(js|css|jpg|png|gif) $0 [L,QSA] RewriteRule .* index.php?m=$0 [L,QSA] Niestety: Nie znaleziono obiektu! Nie znaleziono żądanego URLa na tym serwerze. Jeśli wpisałeś URLa ręcznie, sprawdź, czy nie się nie pomyliłeś. Jeśli myślisz, że jest to błąd tego serwera, skontaktuj się z administratorem. Error 404 Napisałeś, że masz to w katalogu htdocs. To popraw kod bez bazy przepisywania i powinno działać. Stronę mam w folderze htdocs/OO, i w folderze OO znajduje się .htacess. Poza tym usunąłem tą linijkę oraz zamieniłem htdocs na OO w niej i nie działa wciąż, pojawia się błąd serwera. Użytkownik Isaac from Vale edytował ten post 14 lipiec 2010, 15:36 Więc popraw na taki (lub bez bazy):Options +FollowSymLinks RewriteEngine On RewriteBase /OO/ RewriteRule .+\.(js|css|jpg|png|gif) $0 [L,QSA] RewriteRule .* index.php?m=$0 [L,QSA] // Edytowano Skoro pojawia się błąd serwera, to może być problem z opcją FollowSymLinks. Usuń tę linię i sprawdź, czy działa. Użytkownik andrzej_aa edytował ten post 14 lipiec 2010, 15:38 Wciąż to samo, nawet gdy usunę tą linijkę, tym razem pojawia się Internal Server Error. Mam dość. Siódemka jest beznadziejna do uruchamiania serwera. Albo masz słabo go skonfigurowanego. Spróbuj tak, a jeśli wciąż nie działa, to ja się poddaję:Options +FollowSymLinks RewriteEngine On RewriteRule (.+\.(js|css|jpg|png|gif)) $1 [L,QSA] RewriteRule (.*) index.php?m=$1 [L,QSA] Albo tak:Options +FollowSymLinks RewriteEngine On RewriteRule (.+\.(js|css|jpg|png|gif)) $1 [L] RewriteRule .* index.php [L]Ale w tym przykładzie już musisz odczytać wartość z $_SERVER['REQUEST_URI']. Dzięki za próby i starania się, może mnie to naprowadzi na coś, ale niestety, Twoje propozycje zawiodły :( EDIT: Udało mi się ;) RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !/(js)/ RewriteRule ^(.*)$ index.php?m=$1 [L,QSA] starczyło dodać tą linijkę: RewriteCond %{REQUEST_URI} !/(js)/ Użytkownik Isaac from Vale edytował ten post 14 lipiec 2010, 17:15 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d Te linijki powinny wszystko poprawić. Przekopiuj fragmenty plików konfiguracyjnych Apache odpowiedzialnych za typy MIME. Być może nie rozpoznaje istniejących plików albo rzeczywiście jest potrzebny RewriteBase. Też mam XAMPP i nie ma żadnych problemów z mod_rewrite. Użytkownik Ferrari edytował ten post 14 lipiec 2010, 17:49 Ferrari, mój problem polegał na tym, że mam w html tagi <script></script> i jak jest w nich link do js w stylu: "javascript/script.js" to sesja się wysypuje, bo chociaż ścieżka jest niepoprawna, to interpretuje to jako GETa, jak dodam slasha przed nazwę folderu lub dam pełną ścieżkę do pliku zaczynającą sie od http://... to wszystko gra. Jeśli chodzi o xamppa to myślę, że wszystko z nim ok, bo nie wprowadzałem jakichś większych lub dziwnych zmian do konfiguracji apacha itd, a mod_rewrite w ogóle nie ruszałem. Poprawne ścieżki do plików i folderów normalnie działają. Użytkownik Isaac from Vale edytował ten post 14 lipiec 2010, 21:44 |
|||
Sitedesign by AltusUmbrae. |