Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: mod_rewrite - nie działa prawidłowo
Forum PHP.pl > Forum > Serwery WWW
lukas0987
RewriteEngine On
RewriteRule ^([a-zA-Z]+).html$ index.php?id=$1
RewriteRule ^([a-zA-Z]+)-([0-9]+).html$ index.php?id=$1&mid=$2
RewriteRule ^photo-([0-9]+).html$ index.php?id=$1&gid=$2
RewriteRule ^logowanie.html$ logowanie.php

Witam,
powyżej mam przykład mojego pliku .htaccess
2 linia działa idealnie
3 linia też działa dobrze (www.judo.sulkowice.pl/news-62.html wywołuje www.judo.sulkowice.pl?id=news&mid=62)
4 linia nie działa. Po wpisaniu www.judo.sulkowice.pl/photo-7.html tak jakby nie jest rpzekazywana duga zmienna.

Jeżeli chciałem zamienić znak rozdzielający zmienne z "-" an "/" to nie działało nic.
Dlaczego tak jest?
Przypuszczam że te reguły są dobrze napisane, więc coś jest nie tak w photo.php. Ale gdzie mogę znaleźć błąd?
Nie oczekuję gotowych odpowiedzi. Chciałbym to zrozumieć co jest nie tak.
Pozdrawiam
Łukasz
starach
Eee a gdzie ty niby przekazujesz tą drugą zmienną którą ma być gid ?
lukas0987
RewriteRule ^photo-([0-9]+).html$ index.php?id=$1&gid=$2

Tutaj ([0-9]+) i dalej tutaj: index.php?id=$1&gid=$2
xian.pl
Ja bym napisał to tak:

RewriteEngine On
RewriteRule ^([a-zA-Z]+).html$ index.php?id=$1
RewriteRule ^(\w+(?<!photo))-([0-9]+).html$ index.php?id=$1&mid=$2
RewriteRule ^photo-([0-9]+).html$ index.php?id=photo&gid=$1
RewriteRule ^logowanie.html$ logowanie.php
lukas0987
Niestety po wrzuceniu tego co mi napisałeś nie otworzy mi strony głównej.
NIe bardzo wiem jaki tu zabieg wykonałeś i w jakim celu?
kwiateusz
RewriteRule ^photo-([0-9]+).html$ index.php?id=$1&gid=$2
na
RewriteRule ^photo-([0-9]+).html$ index.php?id=photo&gid=$1

chodzi o to że wszelkie wyrażenia zwracają wartość w kolejności ich wywołania czyli jak tu masz tylko ([0-9]+) to to zwraca $1 a nie $2
lukas0987
Już to rozumiem, bo przecież "photo" to nie zmienna, a "([0-9]+)" to jest zmienna pierwsza. Czyli w moim wypadku gid.
Proste jak drut (tyle że sam to bym chyba przez miesiąc na to nie wpadł smilingsmiley.gif )

Jeszcze mnie jedna rzecz męczy, ale nie wiem czy na to jest rozwiązanie.
^photo-([0-9]+).html$ index.php?id=photo&gid=$1

W moim przypadku jeżeli tylko zmienię znak "-" na "/" to już wszystko się wysypuje. Jakby ktoś miał chwilkę czasui byłby mi w stanie pomóc to z góry wielkie dzięki.

Ja już nie mogę z tym: Przecież tu zaraz oszaleję. Dlaczego jeśli wrzucę coś takiego to news-62.html chodzi,
a photo-17.html nie?

RewriteEngine On
RewriteRule ^([a-zA-Z]+).html$ index.php?id=$1
RewriteRule ^([a-zA-Z]+)-([0-9]+).html$ index.php?id=$1&mid=$2
RewriteRule ^photo-([0-9]+).html$ index.php?id=photo&gid=$1
revyag
przenoszę na serwery www
vokiel
Może dlatego, że jak używasz "news-62.html" to 'news' to jest wartość jednej zmiennej a '62' drugiej a przy photo - 'photo' nie jest wartością zmiennej, jest nią tylko '17'

wydaje mi się, że te z photo nie jest w ogóle Ci potrzebne możesz przecież używać tego z news:

Kod
RewriteRule ^([a-zA-Z]+)-([0-9]+).html$ index.php?id=$1&mid=$2


i tutaj rób sobie link:

Kod
www.judo.sulkowice.pl/photo-62.html


będziesz miał w zmiennej id = photo; a w mid = 62;
teraz tylko switch w zależności od id i lecisz z tym.. ;-)
sf
RewriteRule ^photo-([0-9]+).html$ index.php?id=$1&gid=$2

daj tą linicjkę przed

RewriteRule ^([a-zA-Z]+)-([0-9]+).html$ index.php?id=$1&mid=$2
lukas0987
RewriteEngine On
RewriteRule ^([a-zA-Z]+).html$ index.php?id=$1
RewriteRule ^photo-([0-9]+).html$ index.php?id=photo&gid=$1
RewriteRule ^([a-zA-Z]+)-([0-9]+).html$ index.php?id=$1&mid=$2
RewriteRule ^logowanie.html$ logowanie.php

Ta wersja działa idealnie.
Teraz mam tylko problem z "/"
Chciałbym zamienić sperator zmiennych z "-" na "/"
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.