![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 250 Pomógł: 11 Dołączył: 20.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Na początek opiszę co chcę osiągnąć. Linki u mnie wyglądają tak: http://www.jakasnazwastrony.pl/index.php?top=31&id=11 http://www.jakasnazwastrony.pl/index.php?top=31&id=14 top=31 jest to jeden dział na stronie np. Wiadomości, a id to wiadomo id kolejnych wpisów. Na stronie posiadam ok 40 innych działów np.: http://www.jakasnazwastrony.pl/index.php?top=20&id=113 Wszystkie top=cyferka mam przypisane w pliku config:
index.php opiera się na
W ten sposób wyświetlam odpowiednie działy i podstrony. Wiem jak mniej więcej robić w htaccess te przyjazne linki ale nie mogę do końca zrozumieć idei w jaki sposób zamiast linku: http://www.jakasnazwastrony.pl/index.php?top=31&id=11 zrobic link:
W linku zawarte id (tytuły mogą się powtarzać) oraz "Tytuł newsa" wyciągany jest z bazy danych z konkretnej tabeli, wyszukanie z bazy danych odbywa się po ID zawartym w linku. Przeciez w htaccess nie można zapytań wpisywać, więc gdzie to obsługiwać? ID w linku musi być aby wyświetlił się odpowiedni news, ale jak do linku wpisywać dane pobrane z bazy? Jeśli ktoś zna/uczył się to robić w oparciu o jakiś konkretny tutorial to proszę o link. Te które sam znalazłem dokładnie nie tłumaczą tego. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 205 Pomógł: 3 Dołączył: 20.04.2009 Skąd: Jaworzno Ostrzeżenie: (0%) ![]() ![]() |
Najpierw musisz zacząć od bazy danych i tam zrobić coś na kształt :
`id` `nazwaDzialu` <- bez polskich znaków Teraz robisz sobie w .htaccess Kod RewriteRule ^(.*) /([0-9]+)-(.*).html index.php?nazwaDzialu=$1&id=$2 I w swoim pliku index.php szukasz czy nazwaDziału znajduje się w bazie danych i przypisujesz jej ten swój 'top' , który obecnie masz w linku. Wtedy po prostu ukrywasz '?top=31' i zamieniasz na nazwę działu -------------------- :) na miliony przyjdzie czas...
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 250 Pomógł: 11 Dołączył: 20.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
nie do końca rozumiem...czyli mam utworzyć tabele z nazwami działów?
skoro obecnie w linku mam '?top=31' to najpierw muszę wszystkie linki przerobić na stronie skoro w htaccess ma przepisywać adresy z linków rodzaju "index.php?nazwaDzialu=$1&id=$2" A co z tym ID, tam tez z bazy chce pobierać odpowiednie dane np. tytuł newsa. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
jak zrobisz to co kolega wyżej opisał, to getem beddziesz otrzymywał nazwe ddzialu i id wpisu. Ja bym zmodyfikował skrypt tak:
switch ($top) { case 'wiadomosci' (...) i wtedy nicc w bazie nie beddziesz musiał dodawać -------------------- :)
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 250 Pomógł: 11 Dołączył: 20.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
ok usunąłem posta bo sobie z problemem poradziłem.
przyjazne linki już działają. Ale nie wiem do końca w jaki sposób zrobić przekierowanie ze starych adresów z parametrami do nowych przyjaznych adresów. Kod RewriteRule ^([a-zA-Z0-9-_]+)/([a-zA-Z0-9-_]+)-([a-zA-Z0-9-_]+).html index.php?top=$1&id=$2&sname=$3 [L] RewriteRule ^([a-zA-Z0-9-_]+)$ /$1/ [R=301,L,NC] RewriteRule ^([a-zA-Z0-9-_]+)/$ index.php?top=$1 [L] Tutaj jedynie zrobilem przekierowanie aby jak ktoś nie wstawi ukośnika to przekieruje go dopisując ten ukośnik Ale jak przekierować ze starych adresów index.php?top=$1&id=$2&sname=$3 na /$1/$2-$3.html Czyli tak wyglądają moje linki. Robiłem przez 301 ale wyskakiwał błąd na stronie i w ogóle strona nie chodziła |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 18:53 |