Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mod_rewite][php] funkcja przepisujaca
Forum PHP.pl > Forum > PHP
wiiir
heja.. znalazlem taka funkcje

  1. <?php
  2. function rewrite_url_filter($data)
  3. {
  4. $link = $data[0];
  5. $link = ereg_replace('"$', '', $link);
  6. $link = explode('="', $link);
  7. $_link = $link[0];
  8. $link = $link[1];
  9. //reguly
  10. //trzy zmienne
  11. $link=preg_replace('#index.php\?zmienna1=([0-9]*)&zmienna2=([0-9]*)&zmienna3=([0-9]*)#', 'index-\\1-\\2-\\3.htm',$link);
  12. //dwie zmienne
  13. $link=preg_replace('#index.php\?zmienna1=([0-9]*)&zmienna2=([0-9]*)#', 'index-\\1-\\2.htm',$link);
  14. //jedna zmienna
  15. $link=preg_replace('#index.php\?zmienna1=([0-9]*)#', 'index-\\1.htm',$link);
  16.  
  17. $link=preg_replace('#index.php#','index.htm',$link);
  18. $link=preg_replace('#index.php#','index.htm',$link);
  19.  
  20. $link=preg_replace('#index.php#','index.htm',$link);
  21. $link=preg_replace('#rewrite_test.php#','rewrite_test.htm',$link);
  22.  
  23. $link = $_link.'="'.$link.'"';
  24. return $link;
  25. }
  26. function rewrite_ob_filter($string)
  27.  
  28. {
  29. return preg_replace_callback('/(href|src|action)\s*=\s*"[^"]+"/', 'rewrite_url_filter', $string);
  30. }
  31.  
  32. ob_start('rewrite_ob_filter');
  33. ?>


nie jestem autorem wiec podaje link http://forum.sprawnymarketing.pl/pozycjono...zyjazne-url-22/

no i teraz pytenie... poniewaz zaczynam budowac nowy portal zastanawialem sie na "przyjaznymi linkami" ze wzgledu na pozycjonowanie, serwis bedzie dosyc rozbudowany wiec pomyslalem ze taki automat bylby dobry .. latwo mozna dodac nowe regoly, zmieniac postac linku z index-1-2-3-4-5.html na index/1/2/3/4/5/ itd itp
no i teraz pytanie czy warto cos takiego zastosowac (mi sie to podoba), albo czy macie podobne skrypty lepiej dzialajace z ktorymi moglibyscie sie podzielic
Pilsener
Cytat
taki automat bylby dobry
- zapomnij. To prowizorka i amatorszczyzna, statyczne linki, które potem są podmieniane przez *_replace? A PHP to od czego masz? Powinieneś napisać funkcję/klasę generującą linki:
  1. function linki($parametry,$czy_przyjazne='0'){
  2. //kod tworzący linki
  3. }
- funkcja ma utworzyć link na podstawie tablicy parametrów oraz dodatkowego parametru, który mówi o tym, czy link ma być taki:
strona.pl/index.php?page=filmy/sensacyjne/zabili;go;i;uciekl.html
czy taki:
strona.pl/filmy/sensacyjne/zabili;go;i;uciekl.html

W ten sposób łatwo możesz zmienić sposób generowania linków bez ich przepisywania, co jest bardzo istotne dla elastyczności projektu, user powinien mieć opcję w PA linki nice on/off i tyle a programista możliwość łatwej modyfikacji sposobu generowania linków oraz ich tworzenia, wystarczy wrzucić tablicę parametrów do funkcji a ona zajmie się utworzeniem odpowiedniego odnośnika.

Podobnie odbieranie parametrów z linków ma się odbywać dynamicznie, niezależnie od tego, czy link jest przyjazny, nieprzyjazny, modyfikowany czy inny do silnika ma trafić przejrzysta tablica parametrów z wejścia. Chciałbyś się babrać w kilkaset reguł w .htaccess, przepisanie kilkunastu tysięcy statycznych linków + jeszcze zmiana kilkuset linijek kodu PHP bo trzeba zmienić coś w serwisie? Statyczne linki to samo zło.
wiiir
ale wydaje mi sie ze i tak wydzie na to samo minus z ta opcja wlaczania i wylaczania funkcji.. bo przeciez w htaccess i tak trzeba zrobic tyle regol ile postaci linkow bedzie mozna wygenerowac przez ta funkcje

w sumie jeszcze nie bardzo wiem jak mogla by wygladac ta funkcja, nie mam na to pomyslu zeby byla uniwersala i latwa w uzyciu:/
Pilsener
Cytat
przeciez w htaccess i tak trzeba zrobic tyle regol ile postaci linkow bedzie mozna wygenerowac przez ta funkcje
- a kto Ci naopowiadał takich bajek? Ucz się od lepszych i bierz przykład z drupala:
Kod
RewriteRule ^(.+).html$ ?page=$1 [L]
- przepisujesz wrzystkie adresy do jednej zmiennej - $_GET['page'], następnie Twoja klasa/funkcja do obsługi wejścia obrabia ten adres i zwraca gotową tablicę parametrów. Możesz zmieniać zarówno same adresy, jak i ich interpretację bez dotykania .htaccess, adresy obrabiasz po stronie PHP (co jest szybsze i wygodniejsze) a nie przy pomocy mod_rewrite.
wiiir
jednym slowem wysylam 234/23/sd/asd.html

a potem funkcja rozbijam ten syf i dostaje tablice 4 elementowa ze zmiennymi tak?
Pilsener
Tak. Ale nie musimy się ograniczać do /, możemy przecież wykorzystać:
; - oddziela słowa kluczowe
, - oddziela parametry
_ - numer strony
- podział sekcji
- inne?
To już zależy od Ciebie tylko winksmiley.jpg
wiiir
Tak tak, dzieki ze mnie naprowadziles smile.gif, woczraj wieczorkiem zaczalem od takich prostych i fajnie to dziala
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.