Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wlasne przyjazne url
Forum PHP.pl > Forum > PHP
marcio
Witam jestem w trakcie konczenia mojego silnika dla cms'a jednak chcialbym w nim zastosowac wlasny system przyjaznych url'i, i chcialem zapytac czy ktos z was zna jakies dobre art na czym polega pisanie takiego czegos bez ingerencji w server apache i reguly mod_rewrite wiem ze mozna cos takiego zrobic bo czytalem kiedys o tym ale nie wiem zabardzo od czego zaczac tongue.gif
wookieb
Pierwszy wynik w googlach...
http://wortal.php.pl/wortal/artykuly/pomys.../przyjazne_urle
marcio
No ok ok szukac na google to i ja potrafie chodzi mi jak wy byscie to zrobili albo moze ktos z was juz cos takiego robil i moze sie podzielic nie mowie kodem ale pomyslem jak to zrobil i czy dziala to tak jak mod_rewrite.

Ok niby dziala np tak generuje sobie linki i zawartosc(pseudo kod):
  1. <?php
  2. //Inicjalizacja:
  3.  
  4. $arrParams = array();
  5. $strDefaultPath = $_SERVER['SCRIPT_NAME'];
  6. $_SERVER['PATH_INFO'] = isset( $_SERVER['PATH_INFO'] ) ? $_SERVER['PATH_INFO'] : $strDefaultPath;
  7. $arrParams = explode('/', substr( $_SERVER['PATH_INFO'], 1));
  8.  
  9. //Funkcja do robienia linkow:
  10.  
  11. function MakeUrl($site = '/index.php', $params = array('')) {
  12.  
  13. $params = implode('/', $params);
  14. return $site.'/'.$params;
  15.  
  16. }
  17.  
  18. //Przykladowe zapytanie dal tematow z danej kategorii:
  19. $query7 = ('select * from tematy where kategoria="'.mysql_real_escape_string($arrParams[0]).'" and cid = '.(int)$arrParams[1].' order by tid desc limit '.$strona*$liczba.','.$liczba.'');
  20.  
  21. //Zwracanie URL:
  22. echo('<a href="'.MakeUrl('/posts.php', array($dane['kategoria'], $dane['cid'], $dane['tid'], $dane['autor'], $dane['tytul'])).'">'.stripslashes($dane['tytul']).'</a>');
  23. ?>


I url sa takie:
http://strona.pl/easy.php/Webhacking/8 -> Link do kategorii forum gdzie wyswietlane sa tematy danej kategrii
I potem linki generowane poprzez kod zaraprezentowany wyzej:
http://strona.pl/posts.php/Webhacking/8/51/uw_test/Tytul

Czy takie cos dobrze wyglada i jest to w pelni funkcjonalne??

I jeszcze jedno nie bardzo rozumiem jak dokladnie mam usunac te rozszerzenie plikow tzn rozumiem to tylko jest jeden problem przewaznie strony gdzie sa NiceUrl pracuja zawsze pod kontrola jednego pliku(gdzie sie include caly silnik etc...) np index.php wiec regula dla niego w .htaccess wyglada:
Cytat
<Files index>
ForceType application/x-httpd-php
</Files>

A ja np mam kilka plikow np:
admin.php
index.php
register.php
Etc.....

Wiec jak miala by wygladac regula da wszystkich plikow *.php np z katalogu cms/??



questionmark.gif
sagittariuspl
Cytat(marcio @ 27.02.2009, 00:27:45 ) *
A ja np mam kilka plikow np:
admin.php
index.php
register.php
Etc.....

Wiec jak miala by wygladac regula da wszystkich plikow *.php np z katalogu cms/??
questionmark.gif
wyciagasz $_SERVER[REQUEST_URI] i dostajesz np. "/register";
potem tylko include(substr($_SERVER[REQUEST_URI], 1).".php")

chyba o ot Ci chodzilo
marcio
Nie nie chodzi mi o includowanie stron tongue.gif chodzi mi o odwolywanie sie do nich nie podajac rozszerzenia.

Wczesniej podalem ze linki tak wygladaja:
Cytat

A chcialbym zeby do plikow easy/posts.php i innych mozna bylo sie odwolywac bez .php czyli linki mialyby tak wygladac:
Cytat

Tak jak jest w tym arcie: http://wortal.php.pl/wortal/artykuly/pomys.../przyjazne_urle
marcio
Hmm nie bardzo rozumiem nie chce bawic sie w rzadne skomplikowane router'y ani kontrlolery chcialem zastosowac metode przedstawiona w arcie tylko ze dla wiekszej ilosci plikow.

P.S bim2 moze rozwiniesz twoja odpowiedz tongue.gif^^?
bim2
Jesli nei chcesz korzystać z FW, to ok. Ale tą klasę którą załączyłem razem z htaccess możesz użyć.
marcio
No tak ale z tego co ja widze to masz wlasnie mod_rewrite a ja chce bez niego tongue.gif wiem nie znam sie na tym ale chce bez mod_rewrite, glownie o to chodzi ze nie wiem jak zmienic ta regule:
Cytat
<Files index>
ForceType application/x-httpd-php
</Files>

Tak zeby wszystkie pliki nie tylko INDEX byly zawsze typy *.php bez podawania rozszerzenia w URL

To jak ma ktos pomysla^^questionmark.gif
megawebmaster
Z tego co wiem to nie da się zrobić w ten sposób, w który Ty chcesz. Zawsze musisz podać plik, który serwer ma wczytać inaczej nici z wszystkiego. A jak nie podasz '.php' to serwer pomyśli, że chodzi o podkatalogi i tam będzie szukał indeksu.
marcio
Aha no ale z tych artow wynika ze tak mozna.

No ok mowi sie trudno bedzie z .php tongue.gif
bim2
dało się jakoś ale musisz wskazac który plik ma być jako php rozpoznawany.

wtedy adres był mysite.com/index?sdadas=asdasd
marcio
Nom to tez wiem do tego jest regula:
Cytat
<Files nazwa_pliku>
ForceType application/x-httpd-php
</Files>

ALe po pierwsze to dziala tylko dla jednego pliku i jest to troche nieporeczne musialbym kombinowac z modyfikacja i dopisywaniem noweej reguly do pliku htaccess za kazdym tworzeniem nowej podstrony tongue.gif

W sumie nawet nie wiem czy htaccess na szu.pl dziala bo jak daje regule na jeden plik to i tak nie dziala tongue.gif
megawebmaster
Oczywiście chodzi mi o sytuację bez mod_rewrite. Bo z tym modem już da się to bezproblemowo zrobić i w ogóle zrzucić cały routing na apache'a smile.gif
marcio
Cytat(megawebmaster @ 28.02.2009, 20:28:48 ) *
Oczywiście chodzi mi o sytuację bez mod_rewrite. Bo z tym modem już da się to bezproblemowo zrobić i w ogóle zrzucić cały routing na apache'a smile.gif

Czyli??^^
bim2
A nie mozesz zrobić 1 pliku index.php i w nim uruchamianie podstron. Tak powinna działać aplikacja... i tak działają frameworki.
marcio
NOm teraz juz jest zapozno bo mam napisany prawie caly PA i kilka modulow i musialbym przerabiac wszystko tongue.gif mowi sie trudno chyba ze bede moze z czasem przepisywal cms'a.
megawebmaster
Czyli można ustawić reguły Mod_Rewrite w taki sposób, żeby odpowiadały naszym potrzebom, a Apache dostarczy je jako odpowiednie zmienne. Teoretycznie router w aplikacji jest nieco łatwiejszy w obsłudze, za to CHYBA zabiera nieco więcej mocy winksmiley.jpg
marcio
Cytat
Teoretycznie router w aplikacji jest nieco łatwiejszy w obsłudze

Dlatwgo tez wybralem ten sposob to raz a dwa to nie zawsze mod_rewrite jest dostepny.
Qbexus
A ja mam problem z tym uproszczaniem linków w ten sposób bo gubi się ścieżka do obrazków i styli jak to obejść ?
A jak jestem na domena.pl/index.php
to w tablicy jest pełna ścieżka co powoduje kompletne przeszeregowanie.
erix
Poszukaj na forum, było nieraz. winksmiley.jpg
Qbexus
2 problem rozwiązany co do pierwszego to może coś bliżej bo nie mogę nic znaleźć.
erix
<base/> albo ścieżki bezwzględne.
Qbexus
Czyli bez przeróbki templatki się nie obejdzie?
Chodzi o to że robię skrypt do którego w bardzo prosty sposób można podpiąć dowolną templatkę. Ponieważ projekt ma działać na dowolnej konfiguracji serwera (freehosty itp.) chce zrobić przyjazne linki bez modrewrite. Niestety jeżeli przy tym sposobie user musi w szablonie grzebać przy ścieżkach do obrazków i styli to traci to sens sad.gif
Może jakiś inny pomysł?

Edyta ale dzięki może z <base/> da radę to zrobić w miarę prosto.
Rudi1204
a może to Ci pomoże??
Przyjazne adresy URL ForceType
erix
Cytat
Niestety jeżeli przy tym sposobie user musi w szablonie grzebać przy ścieżkach do obrazków i styli to traci to sens

Niekoniecznie. Robisz jedną zmienną, którą ustawia PHP (ścieżka względna do skryptu) i wstawiasz ją do szablonu, nie trzeba niczego zmieniać.
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.