Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Mod_rewrite - problem ze zmiennymi GET
Andrzej20
post
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 3.11.2006

Ostrzeżenie: (0%)
-----


Witajcie

Ostatnio zacząłem interesować się opcją przepisywania linków w Apache'u, ale już na dzień dobry trafiłem na problem. Nie założyłem tematu w Przedszkolu, bo sądzę że to jednak nieco wyższa szkoła jazdy niż podstawowe zagadnienia php. Jeśli się mylę, proszę mnie poprawić.

Mam na localhoście, w folderze o nazwie "blog" plik .htaccess zawierający:
  1. RewriteEngine On
  2. RewriteRule ^([^-]+)$ index.php?page=$1 [L,NC,NS]


...oraz plik index.php w tym samym folderze, o takiej zawartości:

  1. <?php
  2.  
  3. echo $_GET['page'];
  4.  
  5. ?>


Przepisywanie działa dobrze, tzn. wpisanie w przeglądarkę:
http://localhost/blog/zmienna
jest równoznaczne z wpisaniem:
http://localhost/blog/index.php?page=zmienna

Jednak z nieznanych mi przyczyn skrypt przestaje widzieć zmienną page w adresie i zamiast wypisać mi na ekranie "zmienna", otrzymuję napis "index.php" (IMG:http://forum.php.pl/style_emoticons/default/blinksmiley.gif) To mnie zbiło z tropu, kompletnie.

Kiedy usuwam plik .htaccess, to wpisanie:
http://localhost/blog/index.php?page=zmienna
powoduje już poprawne wyświetlenie napisu "zmienna".

Czy ktoś może udzielić mi wskazówki, co robię źle?

Pozdrawiam,
Andrzej
Go to the top of the page
+Quote Post
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Przy wlaczonym mod_rewrite link:
http://localhost/blog/index.php?page=zmienna
bedzie traktowany jako:
index.php?page=index.php?page=zmienna
i stad ci sie bierze index.php
Go to the top of the page
+Quote Post
Andrzej20
post
Post #3





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 3.11.2006

Ostrzeżenie: (0%)
-----


Ok, w takim razie jak przechwytywać zmienne z GET?
Go to the top of the page
+Quote Post
Turgon
post
Post #4





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Kolego skoro używasz Mod_rewrite. Nie potrzebny mi się wydaje GET.
Go to the top of the page
+Quote Post
batman
post
Post #5





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




[L,NC,NS,QSA]

QSA - query string append - dodaje za "ładnym" linkiem query string, czyli zmienną get.
Go to the top of the page
+Quote Post
marcini82
post
Post #6





Grupa: Zarejestrowani
Postów: 190
Pomógł: 1
Dołączył: 20.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


A ja bym zrobil tak:
Kod
RewriteEngine On
RewriteRule ^([^-\.]+)$ index.php?page=$1 [L,NC,NS]


Ciagi zawierajace kropke nie beda przepisywane, wiec jak wpiszesz
http://localhost/blog/zmienna
to zostanie to zamienione na
http://localhost/blog/index.php?page=zmienna
i jako ze index.php zawiera kropke, to ten adres nie zostanie juz ponownie przepisany.
Go to the top of the page
+Quote Post
Andrzej20
post
Post #7





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 3.11.2006

Ostrzeżenie: (0%)
-----


marcini82, działa dokładnie tak jak chciałem - dzięki! (IMG:http://forum.php.pl/style_emoticons/default/guitar.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 13:29