Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [inne][mod_rewrite] Jak zmienić plik.php?id=1 w nazwa_strony.html ?
Elber
post 29.11.2011, 13:09:17
Post #1





Grupa: Zarejestrowani
Postów: 381
Pomógł: 12
Dołączył: 9.07.2007

Ostrzeżenie: (0%)
-----


Witam,

ogólnie w miarę ogarniam mod_rewrite, ale zastanawiam mnie jedna opcja, jak zrobić aby po wywołaniu zmiennej, której wartość to INT np. plik.php?id=1 dzięki mod_rewrite link wyglądał /nazwa_danej_strony.html (.html ->opcjonalnie). Na jakiej zasadzie miałoby to być zrobione? Wiem jak zrobić aby zamienić plik.php?nazwa=cos_tam na /cos_tam.html jednak nie mam pomysłu jak ID danej podstrony zamienić na link z jej tytułem.


--------------------
GG: 564555
Go to the top of the page
+Quote Post
Korab
post 29.11.2011, 13:12:27
Post #2





Grupa: Zarejestrowani
Postów: 202
Pomógł: 36
Dołączył: 10.06.2011
Skąd: Dokąd

Ostrzeżenie: (0%)
-----


Widziałem coś takiego ostatnio. Wrzuć "mod rewrite" w Google.
EDIT: O! Obczaj to: http://www.php.rk.edu.pl/w/p/modrewrite-krotkie-urle/

Ten post edytował Korab 29.11.2011, 13:14:18
Go to the top of the page
+Quote Post
hondek
post 29.11.2011, 13:13:09
Post #3





Grupa: Zarejestrowani
Postów: 355
Pomógł: 50
Dołączył: 20.08.2007
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


Chyba sam mod rewrite nie wywróży Ci, jaki id w bazie ma podana strona, możesz wprobować przepisac (.+).html np. na routes.php?site=$1 i w php już szukać plików / wpisów w bazie po nazwie smile.gif

pozdro


--------------------
przetwornik yt na czasie :)
Go to the top of the page
+Quote Post
Elber
post 29.11.2011, 13:17:25
Post #4





Grupa: Zarejestrowani
Postów: 381
Pomógł: 12
Dołączył: 9.07.2007

Ostrzeżenie: (0%)
-----


OK, przykładowo mam link category.php?id=2 , Kategoria o id 2 w bazie ma nazwę test, jak teraz z tego zrobić link /test.html bądź /2-test (bo chyba jednak trzeba ID w link jakoś przekazać ?)questionmark.gif


--------------------
GG: 564555
Go to the top of the page
+Quote Post
qrzysztof
post 29.11.2011, 13:21:27
Post #5





Grupa: Zarejestrowani
Postów: 220
Pomógł: 19
Dołączył: 25.04.2009

Ostrzeżenie: (0%)
-----


Po prostu robisz category.php?id=2&nazwa=test. I to przerabiasz w mod_rewrite na category.php/2-test.


--------------------
Znalazłeś sam rozwiązanie swojego problemu? Nie pisz "już wiem, do zamknięcia". Podziel się rozwiązaniem - inni będą mieli łatwiej.
Go to the top of the page
+Quote Post
hondek
post 29.11.2011, 13:22:53
Post #6





Grupa: Zarejestrowani
Postów: 355
Pomógł: 50
Dołączył: 20.08.2007
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


No nie koniecznie trzeba, bo możesz zawsze szukać po nazwie, z tym że nazwa musiała by być unikalna, natomiast chyba lepiej id umieścić w urlu, żeby nie męczyć za bardzo mysqla smile.gif

np. www.domena.pl/test-2.html

reguła np.
  1. ([a-zA-Z0-9]+)-([0-9])+ page.php?page=$2


coś w ten deseń smile.gif


--------------------
przetwornik yt na czasie :)
Go to the top of the page
+Quote Post
Elber
post 29.11.2011, 13:27:08
Post #7





Grupa: Zarejestrowani
Postów: 381
Pomógł: 12
Dołączył: 9.07.2007

Ostrzeżenie: (0%)
-----


Cytat(hondek @ 29.11.2011, 13:22:53 ) *
No nie koniecznie trzeba, bo możesz zawsze szukać po nazwie, z tym że nazwa musiała by być unikalna, natomiast chyba lepiej id umieścić w urlu, żeby nie męczyć za bardzo mysqla smile.gif

np. www.domena.pl/test-2.html

reguła np.
  1. ([a-zA-Z0-9]+)-([0-9])+ page.php?page=$2


coś w ten deseń smile.gif



Ok wink.gif tylko podajesz w linku tylko page=$2 co w regule odpowiada -([0-9]) a skąd pierwsza wartość ([a-zA-Z0-9]+) questionmark.gif


--------------------
GG: 564555
Go to the top of the page
+Quote Post
hondek
post 29.11.2011, 13:32:07
Post #8





Grupa: Zarejestrowani
Postów: 355
Pomógł: 50
Dołączył: 20.08.2007
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


pierwsza wartość to nazwa strony, które nie jest istotna do znalezienia jej w bazie ( w $2 masz jej id ) więc jej nie przekazujesz dalej smile.gif


--------------------
przetwornik yt na czasie :)
Go to the top of the page
+Quote Post
Elber
post 29.11.2011, 13:39:33
Post #9





Grupa: Zarejestrowani
Postów: 381
Pomógł: 12
Dołączył: 9.07.2007

Ostrzeżenie: (0%)
-----


Tak wink.gif Jak najbardziej to wiem;) Chodziło mi o to w którym miejscu i gdzie mam $1 przekazać smile.gif


--------------------
GG: 564555
Go to the top of the page
+Quote Post
qrzysztof
post 29.11.2011, 13:40:29
Post #10





Grupa: Zarejestrowani
Postów: 220
Pomógł: 19
Dołączył: 25.04.2009

Ostrzeżenie: (0%)
-----


Elber, idealne rozwiązanie Twojego problemu chyba nie istnieje. Trzeba iść na kompromis:

  • albo optymalna baza (z id kategorii w obcych tabelach),
  • albo ładne adresy w pasku przeglądarki smile.gif


Ten post edytował qrzysztof 29.11.2011, 13:41:17


--------------------
Znalazłeś sam rozwiązanie swojego problemu? Nie pisz "już wiem, do zamknięcia". Podziel się rozwiązaniem - inni będą mieli łatwiej.
Go to the top of the page
+Quote Post
hondek
post 29.11.2011, 13:42:25
Post #11





Grupa: Zarejestrowani
Postów: 355
Pomógł: 50
Dołączył: 20.08.2007
Skąd: Częstochowa

Ostrzeżenie: (0%)
-----


$1 nie przepisujesz bo to tylko niceurl który tobie nie jest potrzebny do niczego, bo wyciągniesz go i tak z bazy po id smile.gif


--------------------
przetwornik yt na czasie :)
Go to the top of the page
+Quote Post
Elber
post 29.11.2011, 13:53:10
Post #12





Grupa: Zarejestrowani
Postów: 381
Pomógł: 12
Dołączył: 9.07.2007

Ostrzeżenie: (0%)
-----


Dobra wink.gif Teraz zaczaiłem jak sobie linka wyobraziłem smile.gif Sory 2 ostatnie pytania były nie potrzebne smile.gif Dzięki wielkie za odp wink.gif Już w wszystko czaję smile.gif

([a-zA-Z0-9]+)-([0-9])+ page.php?page=$2

<a href="$nazwa_z_bazy-$id_z_bazy">Nazwa z Bazy</a>

Pozdrawiam

To jeszcze jedno pytanie smile.gif Przez jaką zmienną w php przepuścić nazwę z bazy żeby zamieniła polskie znaki i spacje na normlany text czyli ą na a spacje na _ itp questionmark.gif


--------------------
GG: 564555
Go to the top of the page
+Quote Post
roghatt
post 29.11.2011, 15:24:57
Post #13





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.03.2006

Ostrzeżenie: (0%)
-----


ja używam tej funkcji:
  1. function seoFriendly($value){
  2. $trans = array("Ä…"=>"a","Ä™"=>"e","L›"=>"s","Ls"=>"z","LL"=>"z","ć"=>"c","L„"=>"n","L‚"=>"l","Al"=>"o"); //tablica z literkami do zmiany
  3. $value = strip_tags(mb_convert_case($value, MB_CASE_LOWER, "UTF-8"));
  4. //strtolower z polskimi literkami
  5. $value = trim(strtr($value, $trans));
  6. //zamienia polskie literki na literki z kodu ascii
  7. $value = preg_replace('/\s\s+/', '', $value);
  8. //jezeli znajdzie jeden niz wiecej znakow bialych obok siebie, to usuwa go
  9. $value = preg_replace('/[^a-z0-9]+/','-',$value);
  10. //znaki rozne od pozostalych liter ascii i cyfr zmieniamy na znaki przestankowe (myslniki)
  11. return $value;
  12. //zwraca przyjazny ciag znakow
  13. }


pozniej zmienna przepuszczasz przez to:
  1. $zmienna=seoFriendly($zmienna);
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 09:32