Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] problem z mod_rewrite
Forum PHP.pl > Forum > Przedszkole
kkuubbaa88
mam napisane wyrazenie

RewriteRule ^aktywacja/([0-9a-zA-Z_-]+)/([0-9a-zA-Z]+)$ aktywacja.php?login=$1&id=$2

wpisuje www.strona.pl/aktywacja/sdfsfs/sdfdfgersfsdfs i na local dziala, a gdy juz wzuce na serwer i wpisze to samo to nie zczytuje mi zmiennych... dlaczego ?

natomiast po wpisaniu www.strona.pl/aktywacja.php?login=sdffss&id=dfgdfgfdfgf to wtedy odczyta mi zmienne... co jest nie tak ?
MMX3
po 1. to nie w php tylko w dziale o apache.
po 2. może zapomniało się o RewriteBase?
kkuubbaa88
dobrze tylko jak tego uzyc?

na serwerze mam katalog www a w nim kilka folderow... w kazdym inna strona... kazda strona ma swoja domene... domeny sa przekierowywane na adres ip serwera, a ten juz sam rozdziela do odpowiednich folderow za pomoca subdomen i multidomen... co ja mam teraz wpisac w tym RewriteBase bo probuje wszystkiego i cos nie chce wyjsc...
matx132
zobacz czy serwer ma właczone rewrite
kkuubbaa88
gdy robie to u siebie na kompie na localhoscie dziala bez problemu... ale gdy juz przeniose na serwer www to niestety nie chce chodzic...

wiem, ze plik htaccess dziala, bo przy dodaniu

RewriteRule ^old\.html$ new.html
dziala bez problemu... przenosi mnie na strone... tak wiec co sie dzieje ?
webdice
Spróbuj tak:

Kod
RewriteRule ^aktywacja/([^/]+)/([^/]+)$ aktywacja.php?login=$1&id=$2 [L]


a poza tym napisałbym czy objawia się to "nie działanie".
kkuubbaa88
tak wiec to rozwiazanie tez nie pomoglo... objawia sie to tym, ze:

w pliku aktywacja sprawdzam na samym poczatku czy istnieja zmienne:
  1. <?php
  2. if (isset($_GET['login']) && isset($_GET['id'])){
  3.  
  4. cos sie dzieje } else {
  5.  
  6. echo"brak danych";
  7. }
  8. ?>


i gdy wywoluje sobie strone www.strona.pl/aktywacja/sdf33sd/sdfsf34sdfsdf34 to pisze mi ciagle, ze jest brak danych...

natomiast gdy wpisze sobie www.strona.pl/aktywacja.php?login=dfgfs3sdf&id=dfgdfgsf23dfdsf to bez problemu wykonuje sie caly skrypt...
jml
Nie jestem pewien ale spróbuj:
Kod
RewriteEngine on
RewriteRule ^aktywacja/([0-9a-zA-Z\_\-]+)/([0-9a-zA-Z]+)$ aktywacja.php?login=$1&id=$2 [L]


Nie zapomnij zostawić przejścia do nowej linii na końcu, na wszelki wypadek.

Id jest liczbą? Wtedy wystarczy:
Kod
RewriteEngine on
RewriteRule ^aktywacja/([0-9a-zA-Z\_\-]+)/([0-9]+)$ aktywacja.php?login=$1&id=$2 [L]


Błąd może też leżeć w tym, że adresujesz do aktywacja.php względnie i może po prostu przy przepisywaniu, serwer szuka tego pliku nie w tym katalogu co trzeba.

Musisz dodać, zaraz pod RewriteEngine on:
Kod
RewriteBase ścieżka

gdzie ścieżka to ścieżka do katalogu w którym jest aktywacja.php.

Więcej:
http://httpd.apache.org/docs/1.3/mod/mod_r...tml#RewriteBase

Ew dodaj w sekcji head, pod np title:
  1. <base href="http://o2.pl/" />

W href właśnie ścieżkę do katalogu z aktywacja.php, ale lepiej przez RewriteBase smile.gif
wipo
Na poczatek to zobacz czy w pliku konfiguracyjnym apache masz włączony odczyt .htaccess z różnych katalogów.

Dla przykładu wpisz na początku Deny from all i zobacz czy strona się wyświetli
kkuubbaa88
wszystko ladnie, ale tak jak mowilem mi ten plik znajduje po wpisaniu www.strona.pl/aktywacja/sdfsdfsfd/sdfsfsdfsdfd bo pisze mi z warunku, ze nie mozna znalesc danych... wiec chyba ze sciezka pliku jest wszystko dobrze... problem raczej siedzi po tym, ze nie chce mi zmiennych odczytac z tej ladnej postaci... czy moze sie myle ?
wipo
a spróbuj w index.php na początku dać
  1. <?php
  2. print_r($_GET);
  3. ?>
kkuubbaa88
jak na razie to mam sam plik aktywacji wiec tam moge dodac...
wipo
Teraz to ja nie rozumiem. Najpierw mówisz ze nie działa a potem że masz sam plik aktywacji. Co ma jedno do drugiego
kkuubbaa88
no i wszylo, ze przy tym adresowaniu www.strona.pl/aktywacja/sdfsdfw324/sdfsfw42342344234 nie sa przesylane zadne zmienne, bo tablica byla pusta

natomiast przy www.strona.pl/aktywacja.php?login=sdf234df&id=sdfdsfsdfds343434 pokazaly sie dwie zmienne...

teraz pytanie dlaczego nie przesylaja sie zmienne ?

obecnie moj htaccess wyglada:
RewriteEngine on
RewriteRule ^aktywacja/([^/]+)/([^/]+)$ aktywacja.php?login=$1&id=$2 [L]
wipo
A spróbuj bez [L] na koncu
kkuubbaa88
brak [L] rowniez nie zalatwia problemu... juz normalnie nie wiem co jeszcze moze byc nie tak...
robos85
Kod
RewriteBase ścieżka
dodałeś?
kkuubbaa88
no nie dodalem, bo plik mi znajduje... a chyba o to chodzi... a jesli mam dodac to co za sciezke tam wpisac?
robos85
Zrobiłem na szybko u mnie na localu test i mam takie pliki:

index.php
  1. <?php
  2. if ($_GET['a'] && $_GET['b']) {
  3. echo $_GET['a'].$_GET['b'];
  4. }
  5. ?>


.htaccess
Kod
Options +FollowSymlinks
RewriteEngine On

RewriteRule ^index/([0-9]+)/([0-9]+)$ index.php?a=$1&b=$2 [L]


wpisuje sobie jako link: http://localhost/testy/rewrite/index/123/123 - i działa
Pliki mam w katalogu /testy/rewrite/ jak coś smile.gif
kkuubbaa88
chcialbym tylko zauwazyc, ze to co ja mam teraz sam obecnie rowniez dziala mi na localu bez problemu... smile.gif ale juz po wzuceniu na serwer nijak nie chce chodzic... i to nawet nie wiem czemu...
robos85
http://www.auto-opinie.pl/testy/rewrite/index/1 - działa
http://tvtracker.netmark.pl/testy/rewrite/index/1 - działa

więc nie wiem co ty możesz mieć źle
kkuubbaa88
nie wiem co to za linki, ale w pierwszym pisze mi tylko "Wartosc a"

a w drugim mam blad 404, ze nie ma pliku... wiec chyba nie bardzo dziala...
robos85
poprawiłem linki.
Chciałem tym pokazać, że podany wcześniej kod działa mi na 2ch serwerach. Za 1 możesz podstawić 1,2 lub 3.

Więc możliwe że po prostu masz coś nie tak z serwerem
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.