![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 3 Dołączył: 28.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Na wstepie: mod rewrite na pewno jest wlaczone, bo wszystkie inne reguly dzialaja, za wyjatkiem tych dwoch:
Kod RewriteRule ^rejestracja/([0-9])$ rejestracja.php?code=$1 [L] RewriteRule ^wydarzenie/([^-])$ wydarzenie.php?id=$1[L] Kod pliku rejestracja.php: Kod <?php print "Oto kod: $_GET[code]"; ?> Po wpisaniu adresu http://localhost/~mojastrona/rejestracja/12345 powienienem dostac napis "Oto kod:12345", a otrzymuje "Oto kod:". Konstrukcja pliku wydarzenie.php jest analogiczna. Gdzie jest moj blad? Dodam, ze jesli regule skonstruuje np tak: Kod RewriteRule ^rejestracja,([0-9]).html$ rejestracja.php?code=$1 [L] to wszystko dziala jak nalezy. Nie chce miec jednak takiej postaci jak powyzej, bo to wogole nie ma sensu, juz lepiej zostawic linki tak jak sa.... Pozdrawiam i dziekuje za pomoc! |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 278 Pomógł: 44 Dołączył: 17.02.2004 Skąd: Wieliczka Ostrzeżenie: (10%) ![]() ![]() |
$_GET[code] powinno a być $_GET['code']
([0-9]) a gdzie podany zakres? powinno być np. ([0-9]+) albo ([0-9]{5}) itp. -inaczej reguła będzie dotyczyła JEDNEJ cyfry. Ten post edytował neverever 3.08.2008, 16:16:33 -------------------- neverever
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 3 Dołączył: 28.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
$_GET[ code] powinno a być $_GET['code'] Nie rozumiem, co to znaczy. Specjalnie wpisalem pierwsza konstrukcje, bo po wpisaniu drugiej kod sie wykrzacza (cudzyslow w cudzyslowiu) ([0-9]) a gdzie podany zakres? powinno być np. ([0-9]+) albo ([0-9]{5}) itp. -inaczej reguła będzie dotyczyła JEDNEJ cyfry. No tak, zapomnialem o zakresie. Mimo wszystko nie dziala - ale zaobserwowalem ciekawa rzecz: Kod RewriteEngine On RewriteBase / RewriteRule ^rejestracja/([^-]+)$ rejestracja.php?code=$1 [L] RewriteRule ^wydarzenie/([^-]+)$ wydarzenie.php?id=$1[L] RewriteRule ^([^-])$ show.php?action=$1 [L] Taki plik dziala (ostatnia regula tylko dziala, ale to nic). Natomiast jesli w ostatniej linijce doloze plusa: Kod RewriteRule ^([^-]+)$ show.php?action=$1 [L] To przestaja dzialac dwie pierwsze reguly - nie wyswietla sie strona, tylko error404... Ten post edytował gazelek 3.08.2008, 16:33:56 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 278 Pomógł: 44 Dołączył: 17.02.2004 Skąd: Wieliczka Ostrzeżenie: (10%) ![]() ![]() |
bo to miało być:
Kod RewriteRule ^rejestracja/([0-9]+)$ rejestracja.php?code=$1 [L] RewriteRule ^wydarzenie/([^-]+)$ wydarzenie.php?code=$1 [L] i
zauważ, że przed [L] ma być spacja! A i jeszcze jedno, nie powinieno być takich folderów jak rejestracja i wydarzenie, ale to chyba wiesz. Ten post edytował neverever 3.08.2008, 17:07:58 -------------------- neverever
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 3 Dołączył: 28.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dzieki, ze Ci sie wogole chce...Szukalem jeszcze na wlasna reke i intryguje mnie ciagle, czemu regula z przecinkami dziala (opisalem powyzej) a z plotkami (/) za cholere :/ probowalem na zewnetrznym serwerze, tez lipa. Skopiowalem gotowe reguly z dzialajacej strony i nic. Jeszcze jedno mi sie nasuwa. Czy nie powinienem umiescic w drugiej linijce .htaccess czegos takiego:
Kod RewriteBase /~mojastrona ? Chodzi o katalog, w ktorym zostala umieszczona strona. Wyglada na to, ze na moim serwerze jest jakas nadrzedna regula. Jesli w adres poda sie localhost/rejestracja, to on przed .htaccess sprawdzi swoje reguly i dopisze na koncu '.php'. Nie wiem, chyba mi zostaja przecinki. Nie rozumiem wogole, czemu to nie chce dzialac, gdzie jest blad. Nawet gotowe, dzialajace, sprawdzone reguly sie sypia na moim WebServie 2.0... Ten post edytował gazelek 3.08.2008, 17:34:08 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 278 Pomógł: 44 Dołączył: 17.02.2004 Skąd: Wieliczka Ostrzeżenie: (10%) ![]() ![]() |
RewriteBase - to zależy od konfiguracji serwera i takich tam, najczęściej działa bez, a niekiedy musisz zadeklarować.
Sprawa wyglada tak, że skoro z przecinkami działa a ze slashami nie, to albo masz takie katalogi albo może trzeba slasha poprzedzić backslashem czyli zamiast / dać \/ -------------------- neverever
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 3 Dołączył: 28.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Zrobilem tak: skopiowalem sobie gotowy plik .htaccess ktory dziala na serwerze u znajomego, obluguje jego strone. Wyglada to tak (fragment):
Kod RewriteEngine on RewriteBase /~mojastrona/ RewriteRule ^gadzety/([0-9]+)$ show.php?id=$1 Stworzylem plik show.php, ktory nie robi nic, tylko wypisuje zawartosc tablicy $_GET - i co? Po wywolaniu localhost/~mojastrona/gadzety/9 otrzymuje strone o zawartosci '9'. Teraz dopisuje swoja regule: Kod RewriteRule ^register/([0-9]+)$ rejestracja.php?id=$1 edit: teraz zczailem - po zmianie rejestracja na register zaczelo dzialac - w zwiazku z tym nazwa reguly nie moze byc taka sama jak nazwa pliku...chyba ![]() I zadzialalo ![]() ![]() Ten post edytował gazelek 3.08.2008, 18:00:16 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 13:51 |