Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [.htaccess][mod-rewrite]
Forum PHP.pl > Forum > Serwery WWW > Apache
yalus
witam

wiem ze po przeczytaniu mojego pytania wiekszosc powie: to juz bylo,
tak bylo ale ja do konca tego nie qmam

otoz mam dwa pliki:

index.php:

w ktorym mam wygenerowane linki
  1. <a href='find.php?letter=a'>a</a>
i tak az do Z

po kliknieciu w link przechodze do strony find.php gdzie przy pomocy zmiennej letter

wykonuje cos takiego:

  1. $zapytanie = "SELECT * FROM user WHERE LEFT(name, 1)=$_GET['letter']";


(aby nie zaciemniac przykladu pomijam tutaj wszystkie walidacje zmiennej letter po wejsciu do pliku find.php)


w momencia gdy juz sie znajduje w pliku find.php link w pasku adresu przegladarki wygladatak: http://www.mojastrona.pl/find.php?letter=a

wiem ze przy uzyciu pliku .htaccess i odpowiednich regol moge go zmienic do tzw. przyjaznego

moje pytanie brzmi:
czy w moim przypadku jest mozliwosc jego zmiany do http://www.mojastrona.pl/find/letter/a


oraz drugie pytanie (bardzo zblizone do pierwszego)

link wyglada tak http://www.mojastrona.pl/find.php?category=23

zeby przyjazny url wygladal tak http://www.mojastrona.pl/find/category/23


jezeli chodzi o pierwszy link to bawilem sie plikiem .htaccess i doszedlem do czegos takiego ale to za bardzo nie chce dzialac:

RewriteEngine On
RewriteRule (letter) /find.php?letter=$1



czy moglby mi ktos przyblizyc jak by to poprawnie zrobic?
kwiateusz
RewriteRule ^/letter/([a-z]?)$ /find.php?letter=$1

powinno działać smile.gif
yalus
dzieki
a czy moglbys mi pomoc ztym linkiem gdzie jest category?
kwiateusz
RewriteRule ^find/category/([0-9]+)$ /find.php?category=$1
yalus
nie wiem co robie nie tak, ale te dwie regoly u mnie nie dzialaja

oto jak wyglad moj plik .htaccess

RewriteEngine On
RewriteRule ^/letter/([a-z]?)$ /find.php?letter=$1
RewriteRule ^find/category/([0-9]+)$ /find.php?category=$1

php_flag session.use_trans_sid off



nie wiesz co moze byc nie tak?
kwiateusz
RewriteEngine On
RewriteRule ^letter/([a-z]?)$ /find.php?letter=$1
RewriteRule ^find/category/([0-9]+)$ /find.php?category=$1

az przeprowadziłem testy smile.gif
yalus
i w Twoim przypadku dziala?


a czy ustawienia w pliku konfiguracyjnym serwera dokonane przez admina moga miec na to wplyw?
kwiateusz
działa, zauwaz ze przed find nie ma / sprawdzalem na prostym skrypcie co pokazywal letter i category z geta i działało idealnie

moze pod RewriteEngine dodaj RewriteBase /
yalus
nie wiem co jest nie tak

stronke mam na nazwa.pl

skopiowalem dokladnie to samo do pliku .htaccess i wrzucilem do katalogu gdzie znajduje sie plik index.php i find.php:

RewriteEngine On
RewriteRule ^letter/([a-z]?)$ /find.php?letter=$1
RewriteRule ^find/category/([0-9]+)$ /find.php?category=$1


i nic dalej mam link find.php?letter=a


zerknij na stronke sam zobaczysz
http://www.notrecommended.co.uk
kwiateusz
działa http://www.notrecommended.co.uk/letter/n

tylko nie zrozumiałeś jak mod_rewrite działa winksmiley.jpg on nie przeleci Ci źródła strony i nie pozamienia linków tylko jesli podasz mu link w przegladarce on go przetworzy czyli jak wchodzisz na http://www.notrecommended.co.uk/letter/n to serwer w rzeczywistosci w tle odpala http://www.notrecommended.co.uk/find.php?letter=n

innymi slowy, linki musisz sam sobie pozamieniać z find.php? na find/
yalus
nie qmam tego w 100%
nie mam pojecia co mam zrobic, nigdy wczesniej nie uzywalem .htaccess

w zrodle moje linki wygladaja tak
  1. <a class='link_normal' href='find.php?letter=a'>a</a>


czy to co powiedziales to znaczy ze mam je jakos zmienic?

czy moglbys mi to pokrotce wytlumaczyc, nie chce cie naciagac ale bardzo prosze tylko o jeden przyklad jak mam to zrobic aby osiagnac zamierzony efekt
kwiateusz
  1. <a class='link_normal' href='letter/a'>a</a>
  2. <a class='link_normal' href='letter/b'>b</a>
  3. <a class='link_normal' href='letter/c'>c</a>


itd

mod_rewrite polega na tym ze on operauje na adresie wpisanym w pole adresu przegladarki, z samym generowaniem strony i odnośnikow na niej nie ma nic wspolnego
yalus
dzieki

ale czy moglbys wejsc jeszcze raz na ta stronke http://www.notrecommended.co.uk i zobacz co sie dzieje
zmienila sie sciezka


to jest funkcja ktora generuje linku

  1. <?php
  2. for ($i=97; $i<=122; $i++)
  3.  {
  4. echo"<a class='link_normal' href='letter/".chr($i)."'>".chr($i)."</a>&nbsp;";
  5.  }
  6. ?>



i po kazdym kliknieciu w link przechodze do nastepnego katalogu letter/letter
itd
hateman
Powinieneś przedstawiać linki w postaci bezwzględnej np:
http://www.notrecommended.co.uk/letter/a

To samo tyczy się pliku css, bo przeglądarka szuka w
http://www.notrecommended.co.uk/letter/a/css/style.css

a jak dasz w headzie

<link type="text/css" rel="stylesheet" href="http://www.notrecommended.co.uk/css/style.css">

to bedzie ok
yalus
chyba juz troche zajazylem z tym mod-rewrite

dzieki
FliSs_tCv
Witam winksmiley.jpg próbuję ustawić u siebie również to co kolega wyżej ale mi nie pokazuje zawartości strony www w katalogu powyżej głównego muszę wtedy coś dopisać?

Drzewo:

- www
- - katalog_w_którym_jest_strona


Proszę o pomoc smile.gif pozfdrawiam
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.