Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Jak wykonać najprostszy system SEO?
wbeatn
post
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 7.05.2007

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


Witam.

Mam bazę danych z kolumnami (aliasID,query,keyword).
W 'query' zapisuje się zapytanie, np. 'index.php?strona=oferta', a keyword klucz - w tym przypadku 'oferta'.

W pliku index.php jest taki kod:

  1. <?php
  2. if(isset($_GET['key'])) {
  3.  
  4. $key=$_GET['key'];
  5. $checkiskey=mysql_fetch_array(safe_query("SELECT * FROM seoaliasy WHERE keyword='".$key."'"));
  6.  
  7. if($checkiskey) {
  8.  
  9. include($checkiskey['query']);
  10.  
  11. } else { echo '404'; }
  12.  
  13. }
  14. ?>


W .htaccess mam wpis:

  1. RewriteEngine On
  2. RewriteRule ^([a-z]+)?$ index.php?key=$1 [L]


Chodzi o to, że teraz po wywaołaniu adresu

http://www.strona.pl/oferta

jeśli w bazie znajdzie alias o takim kluczu (oferta) miałaby się wyświetlić strona z adresu zgodnego z tym co jest w kolumnie 'query', czyli:

http://www.strona.pl/index.php?strona=oferta

jednak include wyświetla zawartość poprawnie tylko jeśli adres jest bez zmiennej - ze zmienną wyświetla się pusta strona

Jakim sposobem poprawnie wyświetlić zawartość wybranej podstrony za pomocą danych z tabeli MySQL, z aliasami tych podstron?

Chciałbym stworzyć najprostszy system SEO.

Ten post edytował wbeatn 28.10.2014, 08:24:37
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
wbeatn
post
Post #2





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 7.05.2007

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


Po kolei

index.php służy tylko i wylacznie do pobrania wartosci zmiennej "key" z adresu

  1. <?php
  2. if(isset($_GET['key'])) {
  3.  
  4. $key=$_GET['key'];
  5. $checkiskey=mysql_fetch_array(safe_query("SELECT * FROM seoaliasy WHERE keyword='".$key."'"));
  6.  
  7. if($checkiskey) {
  8.  
  9. include '_'.$checkiskey['query'];
  10.  
  11.  
  12. } else { echo '404'; }
  13.  
  14. }
  15. ?>


a więc wywołuję w pasku adresu stronę www.strona.pl/index.php?key=(*) [(*) - obojętnie co]
teraz wewnątrz index.php najpierw skrypt sprawdza czy w bazie istnieje rekord, w którym kolumna "keyword" jest równa temu czym jest (*) .. (nie ważne czy "oferta", czy np. "kontakt" .... jak "kontakt", to sprawdza czy jest rekord, w którym kolumna "keyword" równa się "kontakt"

Jak nie znajdzie ma wyświetlić 404

jeśli znajdzie, to ma wyświetlić zawartość z adresu, który zapisany jest w kolumnie "query" dla tego rekordu

||-------------query-------------||-keyword-||
--------------------------------------------------
|| _index.php?strona=oferta || oferta ||
--------------------------------------------------
|| _index.php?strona=kontakt || kontakt ||
--------------------------------------------------

Chodzi o to, że w kolumnie query zapisane są adresy, które prawidlowo wyświetlają stronę do której się odwołują
_index.php?strona=oferta wyświetla pięknie podstronę z ofertą, _index.php?strona=kontakt z kontaktem

ale jeśli próbuję zaincludować przez funkcję include taki adres, to wyświetla, że wywołana scieżka nieprawidłowa, czyli

Cytat
Warning: include(_index.php?strona=oferta) [function.include]: failed to open stream: No such file or directory in /index.php on line 14


Rozumiem, że funkcja inlude nie wyświetli zawartości podstrony zgodnej z tym co jest w zmiennych, że słuzy tylko do wyświetlenia zawartości pliku bez użycia zmiennych
Ja szukam rozwiązania, które spowoduje, że skrypt wczyta mi to samo, co wyświetla się po wpisaniu w pasku adresu dokładnie tego, co jest w kolumnie query

Ten post edytował wbeatn 28.10.2014, 09:26:01
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 8.10.2025 - 18:49