Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Mod_rewrite - problem ze zmiennymi GET
Forum PHP.pl > Forum > PHP
Andrzej20
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" 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
phpion
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
Andrzej20
Ok, w takim razie jak przechwytywać zmienne z GET?
Turgon
Kolego skoro używasz Mod_rewrite. Nie potrzebny mi się wydaje GET.
batman
[L,NC,NS,QSA]

QSA - query string append - dodaje za "ładnym" linkiem query string, czyli zmienną get.
marcini82
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.
Andrzej20
marcini82, działa dokładnie tak jak chciałem - dzięki! guitar.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.