![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 1 Dołączył: 11.11.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam, jestem tu pierwszy raz i potrzebuje waszej pomocy.
Mam problem z linkami w php i htaccessie (temat był wałkowany wielokrotnie na forum, ale nie znalazłem odpowiedniego rozwiązania). Chcę zrobić seo linki na swojej stronie, które mają być generowane dynamicznie przez serwis. Mam kilka plików php, ale chodzi mi głownie o 2 z nich i plik htaccess. W pliku view.php mam: CODE <?php session_start(); require_once('connect.php'); $tytul= $_GET['tytul']; $zapytanie = mysql_query("SELECT * FROM posty WHERE tytul='".$_GET['tytul']."'" ) or die("ERROR: Post doesn't exist."); $wynik= mysql_fetch_array($zapytanie); ?> w drugim pliku: upcoming.php mam komendę do wyświetlenia zapytania z pierwszego pliku: CODE echo '<a href="view.php?tytul='.$wynik['tytul'].'">'.$wynik['nazwa'].'</a>'; Działa to w taki sposób, że z pliku upcoming wywołuję plik view.php z danym parametrem 'tytuł', efektem jest tworzenie linku w postaci: /view.php?tytul=nazwa_z_bazy_danych Chcę zrobić linki seo, czyli aby link wyglądał tak jak poniżej: /view/nazwa_z_bazy_danych W htaccesie mam do tego taką regułkę: RewriteRule ^view/([^-]+)$ view.php?tytul=$1 [L] Mój problem polega na tym, że o ile linki w formie view.php?tytul= działają normalnie i wyświetlają się poprawnie, to przy linkowaniu w upcoming.php w formie: echo '<a href="view/'.$wynik['tytul'].'">nazwa linku</a>'; pojawia mi się błąd apache'a 500, czyli że jest coś nie tak z .htaccess (chociaż pozostałe linki w nim działają normalnie). Podobnie dzieje się jak wpisuje dany link ręcznie do przeglądarki, np: /view/tytul . Potrzebuję waszej pomocy bo nie wiem gdzie leży błąd, czy coś jest nie tak z samym zapytaniem do bazy i jej zwrotem, czy też błąd leży po stronie apache'a, który nie rozpoznaje tego zapytania (chociaż sama regułka jest dobra). Ps. Jestem zielony w php i dopiero się go uczę, dlatego potrzebuję pomocy. Ten post edytował arcziustka 12.11.2011, 00:24:08 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
RewriteRule ^view/([a-zA-Z0-9_]+)$ view.php?tytul=$1 [L]
Przyjmuje od a do z, od A do Z, od 0 do 9 oraz _. Odpadają linki typu tytul=zosia_śama,oh_og Ten post edytował CuteOne 12.11.2011, 02:24:34 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 1 Dołączył: 11.11.2011 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki CuteOne za odpowiedź. Zrobię to w taki sposób, że jak ktoś poda tytuł to php będzie generować dwa wpisy w bazie, jeden "tytul" a 2 o nazwie "link" , i w tym "link" pozbędzie się z niego niepotrzebnych znaków i dostosuje go do formy wyświetlania w przeglądarce.
Rozwiązałem problem, powód był prozaiczny. Wystarczyło dodać do htaccess: CODE RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d Teraz mam trochę inny problem, ale nie chcę otwierać nowego działu więc opiszę go tutaj. Mianowicie mam plik php z formularzem i tam mam w formularzu $_POST['tytul'] . Kiedy użytkownik wpisuje tytuł artykuły to php generuje z niego link do tego posta. Problem pojawia się kiedy ktoś da taki sam tytuł do nowego posta jaki już jest w bazie danych, ponieważ tworzy się taki sam link. Przydała by mi się taka funkcja która sprawdza czy link już jest w bazie danych i jeżeli już jest to aby generowała inny link, np jak mam już w bazie danych link: /nowy-post to aby tworzyła /nowy-post-1. Narazie napisałem coś takiego:
Mógł bym to rozwiązać w taki sposób, że link generuje mi z tytułu i id, ale problem jest w tym, że chce podłaczyć do tego moją starą bazę z cmsa, gdzie własnie tak było to rozwiązane. ___________________________ Ten powyższy problem też jest już nieaktualny, napisałem na stackoverflow i po chwili miałem odpowiedź, ale załączam link jak by ktoś w przyszłości musiał się z tym zmierzyć: http://stackoverflow.com/questions/8113122...reated-by-title Temat można zamknąć. Ten post edytował arcziustka 13.11.2011, 18:47:33 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 20:02 |