![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 2.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
W bazie danych mam kolumny, z których pobieram przez zapytanie gotowe (z parametrami oraz skrócone) adresy do swoich stron, np: adresowi artykuly.php?id_artykulu=10 odpowiada skrocony adres artykuly/tytul-artykulu. Wszystkie adresy w htacces mam przekierowane do skryptu w pliku seo.php CODE RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule (.*) seo.php/$1 [L] I teraz mam problem jak zrobić przekierowanie. Pomysły mam dwa:
lub
Oczywiście to podstawowa forma tych skryptów bez zabezpieczeń itp. Moje pytanie jest, które rozwiązanie będzie lepsze wydajnościowo i ze względu na bezpieczeństwo strony? A może ktoś podsunie inne rozwiązanie? Ten post edytował marek71_33 14.04.2015, 19:01:10 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 324 Pomógł: 105 Dołączył: 7.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
Możesz szukać po slugach w bazie, ale jednak szukanie po liczbach całkowitych jest szybsze. Chociaż dla strony z małą ilościa rekordów (kilkaset) nie będzie to miało znaczenia, bo różnice będą pomijalne.
Ogólnie zrobiłbym to tak. Każdy artykuł miałby nadanego w bazie sluga i id. Link składałby się z np.: artykuly/10-tytul-artykulu 10 to nasz id artykułu, tytul-artykulu to slug. I po tej 10 szukałbym w bazie artykułu, przy okazji poprawiając tytuł (slug) jak się nie zgadza by uniknąc duplikatów. I zapominasz całkiem o GET i przepisywaniu URLi ze zmiennymi na "przyjazne linki". Wystarczy jakiś prościutki ruterek (nawet preg_match), który będzie rozpracowywał całe REQUEST_URI. Jak pasuje do wzoru -> szukamy w bazie, jak nie -> 404. Albo skorzystaj z czegoś gotowego, np.: http://upshots.org/php/php-regexrouter Acha, i jeszcze kierujemy w .htaccess cały ruch na index.php. Ten post edytował kreatiff 14.04.2015, 19:15:01 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 2.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
kreatiff Twój pomysł jest fajny, ale zależy mi na tym, żeby pozbyć się cyfr z adresu. A to co ja napisałem jest możliwe do użycia?
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 324 Pomógł: 105 Dołączył: 7.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
Możesz i owszem pozbyć się cyfr. Wówczas od razu w bazie szukasz całego "tytul-artykulu" i jak jest, to wyświetlasz artykuł z nim związany. Wówczas nawet id tego artykułu jest Ci niepotrzebne. Ale to jest właśnie rozwiązanie, dla małej ilości artykułów w bazie. Bo gdy jest ich więcej, to wydajność wyszukiwania artykułu zacznie wyraźnie spadać w porównaniu do rozwiązania liczbowego.
W Twoim rozwiązaniu nie rozumiem w ogóle po co są GETy w kodzie. Ich już nie używasz wcale, bo nikt nigdy nie wejdzie w link domena/artykuly.php?id_artykulu=10 (bo go nigdzie nie znajdzie). Ktoś wchodzi na stronę: domena.pl/tytul-artykulu, czy to z wyszukiwarki, czy innego miejsca, i skoro nie ma w tym URLu żadnego ID, to nie ma sensu go szukać. Tylko od razu po całym tytule (czyli ten nasz tzw. slug) szukamy artykułu w bazie, czy też includujemy plik tekstowy odpowiadający temu artykułowi. Ten post edytował kreatiff 14.04.2015, 19:34:36 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 04:29 |