Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: .htaccess
Forum PHP.pl > Forum > Serwery WWW > Apache
pentel
Witam,
Jakiś czas temu zrobiłem stronkę w php. Ostatnio naszło mnie na przyjazne linki, bo mam takie w stylu ?x=home&id=5. Trochę mi nie wychodziło, więc sprawdziłem najprostsze przykłady.
  1. RewriteEngine On
  2. RewriteRule ^home/([0-9]+)/$ \?x=home&id=$1

Wpisuję w przeglądarkę http://mojastrona.ovh.org/home/5/
Serwer napotkał błąd wewnętrzny i nie jest w stanie zrealizować twojego żądania. - nie działa.
Czemu? Chyba czegoś nie rozumiem z tych wszystkich kursów/tutoriali/przykładów mod_rewrite.
(W kodzie napisałem "\?" próbując escapeować pytajnik. Bez tego odwrotnego slasha tez nie działa, to było pierwsze co próbowałem).
(W pliku jest enter po regule, tylko forum mi go okroiło).
(Konto mam na ovh).

Pozdrawiam

PS: Przepraszam za złe umieszczenie tematu. Uznałem, że pasuje do działu php, bo problem przyjaznych linków dotyka każdego kto korzysta z querystringów.
Cysiaczek
Przenosze na Serwery www => Apache
prgTW
  1. RewriteEngine On
  2. RewriteRule ^home/([0-9]+)/$ index.php?x=home&id=$1


Wyniku przekierowania RewriteRule'a sie nie escape'uje, escape'uje się tylko wyrażenie regularne które RewriteRule sprawdza, wynik to jest to co zostanie zapisane do wywołania URI więc tam musi być już dokładna informacja jakiemu plikowie skierować parametry i same parametry.
pentel
Witam,
No więc plik jest zawsze ten sam: index.php. ?x=home informuje, że wczytana zostanie podstrona home.php.

A więc skoro musi byc odwołanie do konkretnego pliku, to zrobiłem coś takiego:
  1. RewriteEngine On
  2. RewriteRule ^([a-zA-Z]{4,8})/item/([0-9]+)/$ index.php/?x=$1&m=item&id=$2 [L]
  3. RewriteRule ^([a-zA-Z]{4,8})/page/([0-9]+)/$ index.php/?x=$1&m=page&p=$2 [L]
  4. (enter)


To tez nie działa. Czy potrzeba ci więcej informacji na temat jak działa mój system aby pokazać mi błąd? Bo ja wiem, w czym się poruszam, ale nie wiem co robię źle :-(

Pozdrawiam
prgTW
Wywołaj sobie strone
index.php/?x=home&m=item&id=2

(tam jest slash po .php) bo tak masz w regule, czyli reguła sprowadzi "ładne" wywołania do takiej postaci jak wyzej, zobacz czy link Ci zadziała, jak nie to reguła (a konkretniej przekierowanie) skopana - proste

a tak btw: nie prosciej (wsystkie linki zalatwione przez 3 rulesy):
  1. <IfModule mod_rewrite.c>
  2. RewriteEngine On
  3.  
  4. RewriteRule ^([a-zA-Z]+)/$ index.php?x=$1
  5. RewriteRule ^([a-zA-Z]+)/([a-zA-Z]+)/$ index.php/?x=$1&m=$2
  6. RewriteRule ^([a-zA-Z]+)/([a-zA-Z]+)/([0-9]+)/$ index.php?x=$1&m=$2&id=$3
  7. </IfModule>
pentel
OK, dla mojego systemu powinno to wyglądac tak:
  1. RewriteEngine On
  2. RewriteRule ^(home|articles|team|matches|about|projects|files|sponsors|admin|profile|regi
    s
  3. er|lostpass)/$ index.php?x=$1 [L]
  4. RewriteRule ^(home|articles|matches|files)/page/([0-9]+)/$ index.php?x=$1&m=page&p=$2 [L]
  5. RewriteRule ^(home|articles|matches|files)/item/([0-9]+)/$ index.php?x=$1&m=item&id=$2 [L]
  6.  
  7. RewriteRule ^profile/view/([0-9]+)/$ index.php?x=profile&m=view&id=$1 [L]
  8. RewriteRule ^profile/(edit|setpic|delpic)/$ index.php?x=profile&m=$1 [L]
  9.  
  10. RewriteRule ^admin/(news|articles|users|matches|files|stats|log)/$ index.php?x=admin&m=$1 [L]
  11. RewriteRule ^admin/(news|articles|users|matches|files)/([0-9]+)/$ index.php?x=admin&m=$1&p=$2 [L]
  12. RewriteRule ^admin/(news|articles|matches|files)/(edit|del)/([0-9]+)/$ index.php?x=admin&m=$1&a=$2&id=$3 [L]
  13. RewriteRule ^admin/users/(edit|del|delpic)/([0-9]+)/$ index.php?x=admin&m=users&a=$1&id=$3 [L]
  14. (enter)

Ale nie działa. Spróbowałem więc najprostszy przykład:
  1. RewriteEngine On
  2. RewriteRule ^([a-zA-Z]+)/$ index.php?x=$1
  3. (enter)

I też nie działa. Nie rozumiem. Sprawdziłem, ovh obsługuje .htaccess.

Pozdrawiam
prgTW
Moze od poczatku:
  1. <IfModule !mod_rewrite.c>
  2. mod rewrite potrzebny
  3. </IfModule>


wywolaj index i zobacz czy nie dostaniesz "500 Inernal Server Error", bo to by oznaczalo ze nie ma mod_rewrite. Jak sie nie myle to moze byc mod_rewrite.c, mod_rewrite.so - tego dokladnie juz nie wiem, bo ja na .c lece (winxp)
pentel
ee a OVH nie są na linuxach? biggrin.gif ("mój system" mam na myśli mój system newsów).

no w każdym razie, zawsze jak tylko wstawiam na serwer .htaccess to się robi
Kod
Witamy na stronie serwisu 60free firmy OVH.

Serwer napotkał błąd wewnętrzny i nie jest w stanie zrealizować twojego żądania.

Jeżeli jesteś właścicielem tego konta i szukasz informacji na temat probmemów z błędem wewnętrznym, zapraszamy na stronę http://60free.ovh.org/pl/support/ lub sprawdź czy:

- uprawnienia do uruchamianego zasobu '/p/r/z/przyklad/www/index.php?x=home' mają wartość 755,
- uprawnienia do katalogu mają wartość 755,
[b]- w pliku '.htaccess' nie znajdują się nieprawidłowe wpisy[/b]


Ciężko z tego wywnioskować, czy .htaccess działa czy nie, bo z jednej strony piszą o .htaccess (pogrubiony), a zdrugiej co bym nie dał to jest błąd wewnętrzny. No chyba, że plik jest pusty ;-). Poczytam jeszcze więcej na temat .htaccess i napiszę do adminów czy coś. Póki co, dziękuję za pomoc.

Pozdrawiam
prgTW
Cytat(pentel @ 7.11.2007, 01:23:33 ) *
ee a OVH nie są na linuxach? biggrin.gif

a zes blysnal, wiadomo przeciez, ze na linuchu stoi, nie znam serwerow na windowsach postawionych
Cytat(pentel @ 7.11.2007, 01:23:33 ) *
... i napiszę do adminów czy coś.

to jeszcze do nich nie napisales!?
pentel
I wszystko jasne, przykro mi, że tak Cię męczyłem :-)
"Witam,
Na serwerach 60 free nie ma możliwości korzystania z mod_rewrite.
Pozdrawiam"

I ja też pozdrawiam :-)
prgTW
no i widze, ze najlepiej zasiegnac informacji u zrodla, a swoja drogoa szkoda, widac ze lepiej zaplacic jednak jakas sume za powierzchnie ale miec co sie chce winksmiley.jpg
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.