![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 2 Dołączył: 13.06.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
W ramach bliższego zapoznania się z .htaccess postanowiłem zobaczyć z czym to się je, lecz już na samym początku klapa. .htaccess Kod RewriteEngine On RewriteBase / #... DirectoryIndex index.php RewriteRule ^/?(.*)/(.*)/$ index.php?include=$1&d=$2 [NC,QSA,L] index.php Kod [...] <base href='http://localhost/darkraven/'></base> #przykładowy link: <a href="index.php/yes/loguj" alt='aa'>loguj</a> #standardowo link wyglada podobnie jak w .htaccess, ale napisze: <a hred='index.php?include=yes&d=loguj></a> <?php print_r($_GET); // Array(); ?> [..] Powiecie mi dlaczego nie istnieje get ? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
To zależy pod jaki URL wchodzisz. Twoja reguła w .htaccess mówi, że nadpisane mają być adresy wyglądające tak: (tutaj coś lub nic)/(tutaj coś lub nic)/. W najprostszej postaci wyglądał by on tak: //, bo slashe są u Ciebie wymagane.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 2 Dołączył: 13.06.2012 Ostrzeżenie: (0%) ![]() ![]() |
adres jest taki: http://localhost/testhtaccess/index.php/yes/loguj
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Ten adres nie jest zgodny z Twoją regułą, bo /$ mówi, że na końcu ma być slash ($ oznacza koniec ciągu). Spróbuj /?$ albo zmień URL na http://localhost/testhtaccess/index.php/yes/loguj/ (slash na końcu). No i usuń z URL tę część: index.php/, bo przekierowanie na ten plik załatwia reguła z .htaccess.
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
No, a ma byc taki: http://localhost/testhtaccess/yes/loguj Jednak jak dla mnie chodzi tutaj o slash na końcu. W regule (.*)/ zmieści się również bez problemu index.php/yes/. Jedyne co nie pasuje to brakujący na końcu slash ![]() |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 2 Dołączył: 13.06.2012 Ostrzeżenie: (0%) ![]() ![]() |
a właśnie jak zmienie na link, bez index.php wywala info webserv'a, że został poprawnie zainstalowany...
a i dlaczego jak zmienie na: /?$ or $ - gubi mi css'a co jeszcze zauważyłem jak mama w pliku z menu link: protokół://host/folder/plik.php/ i jak w .htaccess dam bez '/' na końcu css działa a gdy zmienie w pliku z menu link na protokół://host/folder/plik.php już nie ma css'a nie ogarniam już tego Ten post edytował jacek21 24.04.2013, 18:34:54 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Kolego, wkleję Ci hasła, poszukaj sobie sam odpowiedzi.
a właśnie jak zmienie na link, bez index.php wywala info webserv'a, że został poprawnie zainstalowany... -> RewriteBase a i dlaczego jak zmienie na: /?$ or $ - gubi mi css'a Widocznie ścieżka do CSS pasuje do podanej przez Ciebie reguły i zapytanie jest wysyłane do pliku index.php zamiast style.css. Musisz dodać warunek o istnieniu pliku - sprawdź sobie w którym miejscu to wstawić: Kod RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d co jeszcze zauważyłem jak mama w pliku z menu link: protokół://host/folder/plik.php/ i jak w .htaccess dam bez '/' na końcu css działa a gdy zmienie w pliku z menu link na protokół://host/folder/plik.php już nie ma css'a nie ogarniam już tego Zerknij wyżej. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 2 Dołączył: 13.06.2012 Ostrzeżenie: (0%) ![]() ![]() |
Znalazłem taki oto temat: http://forum.php.pl/lofiversion/index.php/t186300.html
no i tak się składa, że piszą tam iż base url załatwia sprawę a ja go mam(patrz 1 post). nie rozumiem dlaczego regułka z /$ działa poprawnie a ta która wymaga lub nie(/?) czy też bez '/'($) już nie działa.. i brakuje css'a użycie rewritecond mi nie pomogło :/ zmieniłem nawet ścieżkę do css'a na bezwzględną i nic nie dało, usunąłem base też nic.. coś musi być źle w .htaccess'ie jeszcze raz pokażę jak wygląda plik: Kod RewriteEngine On RewriteBase /testhtaccess/ #.... DirectoryIndex index.php RewriteRule ^/?(.*)/(.*)/([0-9])/$ index.php?include=$1&d=$2&id=$3 [NC,L] -przy takim linku wszystko działa RewriteRule ^/?(.*)/(.*)/?$ index.php?include=$1&d=$2 [NC,L] wiem, że ten '/' na końcu to małe uniedogodnienie, ale muszę się dowiedzieć o co chodzi.. jeszcze tak na wszelki wypadek base i href do css'a Kod <base href='http://localhost/testhtaccess/'></base>
<link rel="stylesheet" type="text/css" href="/css/style.css" /> Ten post edytował jacek21 25.04.2013, 10:11:36 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Wklej cały .htaccess, który masz w swoim projekcie. Jeśli to to, co widać na górze, to nie ma tam żadnego RewriteCond.
Ten post edytował sowiq 25.04.2013, 11:25:54 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 2 Dołączył: 13.06.2012 Ostrzeżenie: (0%) ![]() ![]() |
No cały, nie ma rewriteCond bo usunąłem, gdyż nie dawał żadnych efektów..
ale już doklejam aktualnie to wygląda tak: Kod RewriteEngine On RewriteBase /darkraven/ #dodaj jeszcze plik z błedem DirectoryIndex index.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^/?(.*)/(.*)/([0-9])/$ index.php?include=$1&d=$2&id=$3 [NC,L] RewriteRule ^/?(.*)/(.*)/?$ index.php?include=$1&d=$2 [NC,L] no i teraz nie czyta css'a czy jes '/' czy tez go nie ma |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Spróbuj tak, powinno działać:
Kod DirectoryIndex index.php RewriteEngine On RewriteBase /darkraven/ RewriteCond %{REQUEST_FILENAME} !-f RewriteRule .* - [PT,L] RewriteRule ^/?(.*)/(.*)/([0-9])/$ index.php?include=$1&d=$2&id=$3 [NC,L] RewriteRule ^/?(.*)/(.*)/?$ index.php?include=$1&d=$2 [NC,L] I zachowaj trochę konsekwencji, bo w .htaccess masz: RewriteBase /darkraven/, a w HTML: <base href='http://localhost/testhtaccess/'></base>. |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 2 Dołączył: 13.06.2012 Ostrzeżenie: (0%) ![]() ![]() |
no bo zmieniłem miejsce pracy
![]() co do kodu jeśli wchodzę w katalog główny nie ma css'a a gdy usiłuję wejść w jakiś dział błąd 404 ;/ |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Kolego, ja jestem chętny do pomagania innym, ale też wykaż odrobinę więcej zainteresowania. Złap jakiś pierwszy lepszy kurs podstaw mod_rewrite i poczytaj. Bo to wygląda trochę tak, że Ty piszesz jakie są objawy (nawet nie podajesz pełnych informacji np. co do URL pod jaki wchodzisz) i oczekujesz że jakaś wróżka poda Ci na tacy gotowe rozwiązanie.
Poczytaj na początek chociażby to: http://bartosz.stasiurka.salon404.pl/post/...urs-mod-rewrite |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 2 Dołączył: 13.06.2012 Ostrzeżenie: (0%) ![]() ![]() |
Nie jest tak, pytając niczego nie oczekuje jedynie mam nadzieję, że ktoś coś podpowie, nie liczę na to, że ktoś mi da gotowca czy też nawet, że ktoś w ogóle odpisze..
Przeczytałem już kilka kursów, ale brak mi doświadczenia z pracą w .htaccess'ie. a trudno go nabrać skoro kombinuję jak mogę, przeszukałem już pół google i do czego bym się nie zastosował wychodzi to samo. Podaję objawy, piszę co się dzieje, co zmieniam, podaje linki cały czas opieram się na 2 i tych samych wersjach linków: <a hre='yes/ogloszenia'></a> czyli: http://localhost/darkraven/yes/ogloszenia <a hre='yes/ogloszenia/'></a> czyli: http://localhost/darkraven/yes/ogloszenia/ ponieważ cały czas próbuje uzyskać ten sam efekt, żeby wersja linku pierwszego również działał, w linkach nic nie zmieniam bo co ja tam mogę zmienić jeśli chodzi mi jedynie o slash'a na końcu ? Przepraszam, ale w ogóle nie wiem dlaczego masz do mnie pretensje ? co ja mogę więcej napisać ? jeśli brakuje ci jakiś informacji i chcesz pomóc to zadaj pytanie a nie oskarżaj mnie, że w ogóle nie wykazuje żadnego zainteresowania bo tak nie jest, nie będę przecież pisał tutaj wszystkiego co robię bo jaki to ma cel ? |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Przepraszam, ale w ogóle nie wiem dlaczego masz do mnie pretensje ? Kolego, nie mam do nikogo żadnych pretensji. Po prostu odniosłem wrażenie, że wklejasz sobie rozwiązanie i na forum piszesz, że coś nie działa, bez żadnych szczegółów. Jeśli tak nie jest, to przepraszam. Wracając do rzeczy - robisz zbyt ogólne wyrażenia regularne. Do takiego wzorca: /(.*)/ będzie pasowało wszystko to: /foo/, /foo-bar/, /foo/bar/baz/, //. Kropka oznacza dowolny znak, gwiazdka dowolną ilość powtórzeń (również zero). Dlatego Twoje reguły mieszają się między sobą. Zamiast /(.*)/, dużo lepszym pomysłem jest dawać: /([^/]+)/, czyli jeden lub więcej znaków różnych od / otoczonych slashami. Taki wzorzecz będzie pasował do /foo/ i /foo-bar/, ale do /foo/bar/baz/ i // już nie. Zakładając, że będziesz miał dwa typy adresów: - /yes/ogloszenia - /no/ogloszenia powinieneś zrobić taką regułę: Kod RewriteRule ^(yes|no)/([^/]+)/?$ index.php?include=$1&d=$2 [NC,L] Do tego wszystkie (.*) pozamieniać na podane wcześniej ([^/]+). Warunku na początkowy slash możesz nie pisać, bo i tak nie jest nigdy dodawany. Końcowy - owszem. Odpaliłem i sprawdziłem. U mnie wszystko działa. Jeśli u Ciebie nie chce, to znaczy, że Twój problem leży gdzie indziej. Kod DirectoryIndex index.php RewriteEngine On RewriteBase /darkraven/ RewriteCond %{REQUEST_FILENAME} -f RewriteRule .* - [PT,L] RewriteRule ^([^/]+)/([^/]+)/([0-9])/?$ index.php?include=$1&d=$2&id=$3 [NC,L] RewriteRule ^(yes|no)/([^/]+)/?$ index.php?include=$1&d=$2 [NC,L] Pozdrawiam. |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 2 Dołączył: 13.06.2012 Ostrzeżenie: (0%) ![]() ![]() |
Przed wejściem na forum też zmieniłem wyrażenie regularne na:
Kod RewriteRule ^([a-z]+)/([a-z]+)/([0-9])/?$ index.php?include=$1&d=$2&id=$3 [NC,L] RewriteRule ^([a-z]+)/([a-z]+)/?$ index.php?include=$1&d=$2 [NC,L] i zadziałało ![]() Oraz za wyjaśnienie przy okazji dlaczego (.*) jest złym pomysłem ^^ E: dużo czasu poświęciłem na tą 'zagadkę', ale jakby nie to, to pewnie nie poświęciłbym tyle czasu na .htaccess'a a przez to ominąłbym wiele ciekawych artykułów.. pozdrawiam Ten post edytował jacek21 25.04.2013, 16:17:44 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 20.07.2025 - 14:13 |