Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Urle - po raz kolejny
Forum PHP.pl > Forum > PHP
dzesi
Witam was , wiem koleiny temat , ale ja nie chce gotowca .Mam problem i bym chciał żebyście mi pomogli ,otóż chce do swojego cmsa zrobić przyjazne urle http://mojasite/cos=?/i coś tam dalej , ogólnie zęby były tak przejrzyste jak w wordpress czy w innych gotowcach .Jak zrobić takie urle ? jak sie za to zabrać proszę o wskazówki ?
Zawsze przy małych stronach korzystałem z switch ale chyba już sie nie używa tego sposobu?
kossa
Aby korzystać z przyjaznych adresów url musisz mieć na serwerze zainstalowany moduł serwera apache mod_rewrite który za to odpowiada, musisz mieć plik .htaccess a katalogu głównym w którym definiujesz wygląd swoich adresów, np:

Kod
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+),([^/]+).html$ index.php?section=$1&sub=$2 [L,QSA]


normalnie adres wygląda tak: domena.pl/index.php?section=ala&sub=kot

a przyjazny url: domena.pl/ala,kot.html

prawda że ślicznie smile.gif

w kodzie php nic nie musisz zmieniać, odwołujesz się do zmiennych jak cały czas, więc w tym przypadku $_GET["section"] da nam ala itd

pozdrawiam,
Łukasz
wrzasq
jest kilka drog:

1. PATH_INFO
jezeli nie masz mod_rewrite w Apacheu (wzglednie analogicznego mechanizmu w innym daemonie) to musisz korzystac z $_SERVER['PATH_INFO']. tyle ze wtedy tez server musi byc skonfigurowany tak, zeby przekazywac do twojego pliku zapytrania do nie istniejacych plikow. na przyklad:
Kod
http://example.com/newsy/tytul_newsa

byloby przekazane do index.php w polu $_SERVER['PATH_INFO'] jako /newsy/tywul_newsa (zwroc uwage na poczatkowy slash!, po wykonaniu explode('/', $_SERVER['PATH_INFO']) pierwsze pole wyniku bedzie puste!).

2. mod_rewrite + wszystko w .htaccess
jesli masz mod_rewrite (w przypadku Apachea, na innych serverach inaczej sie to moze nazywac, ale chodzi o efekt) to poczytaj o konfiguracji mod_rewrite przez pliki .htaccess (RewriteEngine, RewriteRule powinny ci starczyc, wzglednie RewriteBase i RewriteCond moga sie przydac). wtedy po prsotu tworzysz sobie liste przypisanych URLi, na przyklad:
Kod
RewriteEngine On
RewriteRule ^newsy/(.+)$ /news.php?tytul=$1

(trzeba znac wyrazenia regularne). zwroc uwage, ze zapytania sa bez poczatkowego slasha!, a nadpisane sciezki sa pelna sciezka zapytania, wiec moga (a nawet powinny) zawierac slash na poczatku, zeby powiedziec, ze odnosi sie to bezposrednio do lokalizacji w DocumentRoot twojego hosta.

3. mod_rewrite + przetwarzanie w PHP
chyba najbardziej elastyczna metoda i moja ulubiona. tworzysz plik .htaccess w ktorym przepisujesz wszystkie zapytania (z wyjatkiem powiedzmy wykluczonych sciezek do styli, obrazko, pikow .js i tak dalej...) do swojego skryptu PHP, ktory moze w dowolny (czytaj - bardziej elastyczny niz sam .htaccess) wykonywac akcje bazujac na przekazanej sciezce. przyklad:
Kod
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/index.php$
RewriteCond %{REQUEST_URI} !^/images/
RewriteCond %{REQUEST_URI} !^/upload/
RewriteRule ^(.*)$ /index.php?run=$1 [L]

tutaj juz RewriteCond bedzie niezbedny. zworc tez uwage na druga linijke i argumenty do ostatniej z nich - sa niezbedne aby zapobiec zapetleniu!

to tyle na szybko, a dla szczegolow to poszukaj, takie rzeczy byly na forum nie raz a o PATH_INFO jest nawet art na php.pl.
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.