Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [modRewrite] Nie działają zmienne
Forum PHP.pl > Forum > Przedszkole
Rewil
Na serwerze są włączone.
  1. RewriteEngine On
  2. RewriteRule ^([^-]+)$ index.php?id=$1 [L]

Umieszczone to mam w folderze w głąb, czyli home/folder/.htaccess, plik też jest w katalogu folder.
Mogę mieć to umieszczone tak? Czy musi być w głównym. Wynikiem $_GET['id'] jest index.php.
nospor
A jak wygląda adres, który odpalasz?
Rewil
np. adres.pl/folder/2
nospor
I dla dokładnie takiego adresu: adres.pl/admin/2
echo $_GET['id'];
zwraca ci tekst "index.php" ?
Rewil
Tak sad.gif
nospor
print_r($_SERVER);
co ci wyświetla?
Rewil
  1. Array ( [DOCUMENT_ROOT] => /home/xxx/domains/xxx/public_html [GATEWAY_INTERFACE] => CGI/1.1 [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 [HTTP_ACCEPT_CHARSET] => ISO-8859-2,utf-8;q=0.7,*;q=0.3 [HTTP_ACCEPT_ENCODING] => gzip,deflate,sdch [HTTP_ACCEPT_LANGUAGE] => pl-PL,pl;q=0.8,en-US;q=0.6,en;q=0.4 [HTTP_CACHE_CONTROL] => max-age=0 [HTTP_CONNECTION] => keep-alive [HTTP_COOKIE] => __utma=24283554.1710795766.1320069516.1320880957.1320964920.21; __utmz=24283554.1320334950.9.3.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=xxx%20agencja [HTTP_HOST] => www.xxx [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.120 Safari/535.2 [PATH] => /bin:/usr/bin [PHPRC] => /usr/local/etc/php5/cgi/ [QUERY_STRING] => id=index.php [REDIRECT_STATUS] => 200 [REMOTE_ADDR] => 77.236.28.33 [REMOTE_PORT] => 58981 [REQUEST_METHOD] => GET [REQUEST_URI] => /folder/index.php?id=1 [SCRIPT_FILENAME] => /home/xxx/domains/xxx/public_html/folder/index.php [SCRIPT_NAME] => /folder/index.php [SERVER_ADDR] => 91.121.35.130 [SERVER_folder] => webmaster@xxx [SERVER_NAME] => www.xxx [SERVER_PORT] => 80 [SERVER_PROTOCOL] => HTTP/1.1 [SERVER_SIGNATURE] =>
  2. Apache/2 Server at www.xxx Port 80
  3. [SERVER_SOFTWARE] => Apache/2 [UNIQUE_ID] => TsAEWFt5I4IAAC-SYHkAAAAM [PHP_SELF] => /folder/index.php [REQUEST_TIME] => 1321206872 [argv] => Array ( [0] => id=index.php ) [argc] => 1 )


Cytat
Array ( [0] => id=index.php )

Dziwne to trochę, skąd on sobie wyjmuje to smile.gif
nospor
Weź przed RewriteRule dopisz jeszcze:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

[REQUEST_URI] => /folder/index.php?id=1
wskazuje, że jednak przeglądarka dostaje taki adres a nie adres.pl/admin/2

Albo więc ci się gdzieś zapętla i te dwie linijki wyżej co ci podałem rozwiąze sprawę
Albo ty taki adres zapodajesz do przelgądarki
ALbo coś masz gdzieś jeszcze smile.gif
Rewil
Działa smile.gif Możesz dla potomnych powiedzieć mniej więcej co to robi? Bo dla mnie jeszcze jest to narazie nie zrozumiałe, tak samo jak i ten błąd smile.gif

Edit@
Hmm, rozumiem. Ok, wielkie dzięki! smile.gif
nospor
Te dwie linijki powodują, że regułka odpala się dopiero wtedy, gdy nie istnieje fizycznie plik, do którego się odwołujesz.

/admin/2 nie istnieje
index.php istnieje

W 90% przypadków interesuje nas, by regułka dotyczyła tylko adresów, które nie istnieją.
by_ikar
Kod
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d


Oznacza ignorowanie istniejących plików (!-f) i ignorowanie istniejących katalogów (!-d) przez mod_rewrite. Tak już w sumie dla zasady, poczytaj wpis na tym blogu: http://eriz.pcinside.pl/weblog/mod_rewrite...wiazac-208.html dotyczy właśnie htaccess i jest trochę "przyjaźniej" napisane dla początkujących.

@up byłeś szybszy wink.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.