Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> ladne urle - mod_rewrite
Revan
post
Post #1





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 21.03.2004
Skąd: Warszawa

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


Witam.
Pisalem skrypt dla kolegi na domowym kompie z krasnalem. Wykorzystalem przyjazne url-e Scannera z php.pl. Wszystko ladnie dziala, uploaduje skrypt na serwer kolegi, uruchamiam, klikam na jakis link i... 404.
Domyslilem sie po komentarzach do Przyjaznych Url-i jest cos z MultiViews w apachu. Niestety do konfiguracji serwera kolega nie ma dostepu (jest tylko plesk). Tak wiec zostaje chyba tylko mod_rewrite. Szukajac forum dokopalem sie do skrptu sprawdzajacego czy jest zainstalowany. Test przebiegl pomysnie, ale przejąlem sie troche tymi regulami itp. Z apache.org niezbyt duzo sie dowiedzialem (raczej - niewiele zrozumialem). I moje pytanie: Czy da sie uzyskac bardzo podbony efekt przy uzyciu mod rewrite jak przy sposobu Scannera ?
Mam link http://localhost/index/zmienna/druga/trzecia/czwarta
i sposobem z php.pl mam url[0] rowna zmienna url[1] druga, url[2] trzecia i url[3] czwarta.
Nie bede Was oszukiwal, prosze o napisanie takiej regulki, albo podania linku (zapytanie do google tez moze byc rolleyes.gif ) do polskiej strony gdzie jasno jest wytlumaczenie tworzenia regulek.
Z gory dziekuje.
Pozdrawiam,
Revan.
Go to the top of the page
+Quote Post
bregovic
post
Post #2





Grupa: Zarejestrowani
Postów: 562
Pomógł: 15
Dołączył: 8.08.2003
Skąd: Denmark/Odense

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


Po polsku niestety nie znam żadnej strony, ale możesz przeczytać to (po angielsku) - i może coś zrozumiesz winksmiley.jpg

Ale, żeby nie być niepomocnym, napiszę ci regułkę - potrzebujesz przeniesienia http://host/zmienna1/zmienna2/zmienna3 do postaci zrozumiałej przez php? najłatwiej chyba będzie tak:
Kod
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-F
RewriteRule ^([^/]+)/([^/]*)/([^/]*)/?$ /index.php?zmienna1=$1&zmienna2=$2&zmienna3=$3

To jest rozwiązanie najłatwiejsze - ale w sumie najmniej optymalne. O wiele lepeij użyć czegoś takiego:
Kod
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-F
RewriteRule .* index.php

To rozwiązanie przekarze wszystkie żądania do pliku index.php. Aby móc użyć zmiennych z adresu użyj następującej konstrukcji w pliku index.php:
  1. <?php
  2.  
  3. $arrUrl = array();
  4. $arrReturn = array();
  5. $intA = count(explode('/', 'http://host/')) - 4;
  6. $arrUrl = explode('/', substr($_SERVER[&#092;"REQUEST_URI\"], 1));
  7. for($intI = 0, $intCount=count($arrUrl); $intI<=$intCount; $intI++)
  8. {
  9. if ($intI < $intA)
  10. {
  11. continue;
  12. }
  13. else
  14. {
  15. if(empty($arrUrl[$intI]))
  16. {
  17. continue;
  18. }
  19. $arrReturn[] = $arrUrl[$intI];
  20. }
  21. }
  22.  
  23. ?>


--------------------
Prank - for the fun. Mac - for the simplicity. Deviantart - for the kick.
Life is ours, We live it our way -- Metallica
Go to the top of the page
+Quote Post
Ace
post
Post #3





Grupa: Zarejestrowani
Postów: 216
Pomógł: 0
Dołączył: 9.08.2003
Skąd: Warszawa

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


O ile dobrze pamietam, to co Scaner napisal na php.pl dziala, sam tego uzylem w kilku projektach i dziala idealnie. W tym co Scaner opisal, trzeba zastosowac odwolanie sie do skryptu php, czyli nie
www.example.com/zmienna1/zmienna2/zmienna3
lecz
www.example.com/index.php/zmienna1/zmienna2/zmienna3
Wtedy nie powinno byc problemu pod warunkiem ze plik index.php istnieje. Zmienne wyciagane sa z adresu i powinno byc ok.
Go to the top of the page
+Quote Post
Revan
post
Post #4





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 21.03.2004
Skąd: Warszawa

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


zle mnie zrozumiales ace
wiem jak sie korzysta z tego sposobu Scannera, napisalem skrpyt oparty na jego sposob ale mi on po prostu nie dziala na serwerze na ktorym on mial byc.
Go to the top of the page
+Quote Post
bendi
post
Post #5





Grupa: Zarejestrowani
Postów: 401
Pomógł: 5
Dołączył: 14.09.2003
Skąd: Wrocław

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


sproboj na webhelp


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 06:08