Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne][MySQL][PHP]przyjazne linki + SQL
Forum PHP.pl > Forum > Przedszkole
roghatt
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:
  1. $wiadomosci=31;
  2. $jakisdzial=20;


index.php opiera się na

  1. switch ($top) {
  2.  
  3. case $wiadomosci:
  4.  
  5. include("jakisplik.php");
  6.  
  7. break;
  8.  
  9. case $jakisdzial:
  10. include ("jakisplik2.php");
  11. break;
  12.  


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:
  1. http://www.jakasnazwastrony.pl/nazwadzialu/11-tytul_newsa.html


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.
Poker
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
roghatt
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.
peter13135
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ć
roghatt
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
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.