Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Przyjazne (ładne) linki
Malinaa
post
Post #1





Grupa: Zarejestrowani
Postów: 577
Pomógł: 6
Dołączył: 21.07.2008

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


Szukam dobrego rozwiązania dla przyjaznych linków.

Mam coś ciekawego:
  1. $arrParams = array();
  2. $strDefaultPath = '/sprawdzam/index.php';
  3. $_SERVER['PATH_INFO'] = isset( $_SERVER['PATH_INFO'] ) ? $_SERVER['PATH_INFO'] : $strDefaultPath;
  4. $arrParams = explode( '/', substr( $_SERVER['PATH_INFO'],1) );
  5. echo '<pre>';
  6. var_export( $arrParams );
  7. echo '<pre>';


Problem: na moim kompie localhost $_SERVER['PATH_INFO'] nie wyświetla nic.
Czym można zastąpić $_SERVER['PATH_INFO'] , aby uzyskać wymarzony (IMG:style_emoticons/default/smile.gif) efekt.

Próbuje również z .htaccess , ale nie wiem o co chodzi.

W pliku .htaccess zapisałem:
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)-c-([0-9]*).html$ index.php?cat=$1&id=$2

W plikach index.php mam link np. <a href="produkty/super_offers">Oferta</a>

i po kliknięciu oczywiście - Błąd 404 strona nie znaleziona.

O co chodzi z .htaccess i jak tworzyć linki?

A może po prosu, kto napisze (przedstawi) ciekawszy sposób na przyjazne linki .

Help me, please.

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Wyciągaj z REQUEST_URI. Zależy od konfiguracji.

Go to the top of the page
+Quote Post
Malinaa
post
Post #3





Grupa: Zarejestrowani
Postów: 577
Pomógł: 6
Dołączył: 21.07.2008

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


Dziękuje erix.
Go to the top of the page
+Quote Post
cojack
post
Post #4





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


Albo ciśnij po .htaccess:

Kod
  RewriteBase /

  # Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]


Ten post edytował cojack 23.09.2009, 00:30:10
Go to the top of the page
+Quote Post
Malinaa
post
Post #5





Grupa: Zarejestrowani
Postów: 577
Pomógł: 6
Dołączył: 21.07.2008

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


Cytat
W plikach index.php mam link np. <a href="produkty/super_offers">Oferta</a>
i po kliknięciu oczywiście - Błąd 404 strona nie znaleziona.


Z REQUEST_URI jest ok.
Pozostaje powyższa rzecz jak tworzyć linki na stronie (np. w menu) i jak powinien wyglądać skrypt php, aby po kliknięciu w link o adresie:
- produkty/super_offes zamiast np. produkty.php?a=super_offers otwierana była strona produkty.php załaduj super_offes, gdzie na stronie produkty.php może być super_offes, super_offes1, super_offes2, super_offes3 and more...

bez komunikatu Bład 404?
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




No to tak, jak napisał ~cojack - wszystkie parametry masz wówczas w $_GET['q']. Trzeba było poczytać kilka tutoriali nt. rewrite'a.

Cytat
Pozostaje powyższa rzecz jak tworzyć linki na stronie (np. w menu)

http://eriz.pcinside.pl/weblog/mod_rewrite...ac-208.html#t81
Go to the top of the page
+Quote Post
Malinaa
post
Post #7





Grupa: Zarejestrowani
Postów: 577
Pomógł: 6
Dołączył: 21.07.2008

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


Czegoś tutaj nie wiem

Na localhost mam katalog, w którym znajduje się projektowany serwis, katalog o nazwie _serwis

W pliku . htaccess mam:
# PHP Settings
RewriteEngine On

# RewriteBase /
RewriteBase /_serwis
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?a=$1 [L,QSA]

Dla strony index.php w katalogu _serwis jest ok, wszystko wyświetla się prawidłowo,
teraz z katalogu _serwis/produkty/ jest również plik index.php, który mógłby być plikiem głównym dla katalogu produkty/ z którego za pomocą np. if'ów (switch, case) można byłoby wyświetlić odpowiednie body strony np. dla prokukt1, produkt2 itd.,
ale tutaj po wpisaniu w pasku przglądarki adresu http://localhost/_serwis/produkty/prokukt1 wyświetla mi stronę główną _serwis/index.php

Czy muszę wszystkie adresy (if'y lub switch) umieścić w pliku głównym _serwis/index.php i stąd przekierowywać do katalogu _serwis/produkty/produkt1 i kolejne produkt2, 3, 4, 5...

Czy można ustawić wszystko w .htaccess i jak to zrobić, ponieważ coś nie bardzo wiem jak to zrobić, aby było dobrze?

Go to the top of the page
+Quote Post
fander
post
Post #8





Grupa: Zarejestrowani
Postów: 231
Pomógł: 22
Dołączył: 6.10.2008

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


w .htaccess zrób przekierowanie wszystkiego przez index.php

Kod
RewriteEngine on
RewriteRule .* index.php


w index.php zrób funkcję która podzieli ci zapytanie np jesli przychodzi zapytanie http://domena/dzial/typ/produkt to wykonuje odpowiednie funkcje
Go to the top of the page
+Quote Post
Malinaa
post
Post #9





Grupa: Zarejestrowani
Postów: 577
Pomógł: 6
Dołączył: 21.07.2008

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


Pierwszy raz robiłem coć z .htaccess i stwierdziłem - trzeba się przejść.
Przyszedłem i wymyśliłem, że plik .htaccess umieszczam w każdym katalogu do którego prowadzą przyjazne linki z odpowiednim RewriteRule i działa dobrze, tzn. mam ładne linki and no problem with my website.
Mam tylko jeszcze jedno pytanie do .htaccess (przyjazne linki).
Czy wymienione rozwiązanie jest dobre?
Go to the top of the page
+Quote Post
erix
post
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Przyszedłem i wymyśliłem, że plik .htaccess umieszczam w każdym katalogu do którego prowadzą przyjazne linki z odpowiednim RewriteRule i działa dobrze, tzn. mam ładne linki and no problem with my website.

A gdybyś miał kilkadziesiąt działów? (IMG:style_emoticons/default/tongue.gif)

Cytat
Czy wymienione rozwiązanie jest dobre?

Zależy. Przy większych aplikacjach - tak - masz dynamiczny routing. Przy prostych stronach - nie ma sensu, niepotrzebne są w większości jakieś zaawansowane routery.
Go to the top of the page
+Quote Post
Malinaa
post
Post #11





Grupa: Zarejestrowani
Postów: 577
Pomógł: 6
Dołączył: 21.07.2008

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


Pojawił się inny problem, dotyczący zmiennych w ładnych linkach

Otórz mam adres: http://localhost/_serwis/produkty/oferta,1 bez końcówki ,1 działa znakomicie, ale jeżeli potrzebuję przekazać nie jedną, a kilka zmiennych wartość po ostatnim slesh oferta,1 traktowana jest jak zmienna pierwsza i jedyna, a potrzebuję aby oferta - było zmienną pierwszą , 1 - zmienną drugą i potrzebne będą kolejne zmienne np. /oferta,wartosc1,wartosc2,wartosc3 .

.htacces wyglada tak:

# PHP Settings
RewriteEngine On

RewriteBase /_serwis/produkty
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php?oferta=$1 [L,QSA] # jak dodac kolejne zmienne... &b=$2&c=$3&d=4

Help (IMG:style_emoticons/default/sciana.gif)

Go to the top of the page
+Quote Post
Reiven
post
Post #12





Grupa: Zarejestrowani
Postów: 100
Pomógł: 1
Dołączył: 17.03.2006

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


dam Ci przykład:

RewriteRule ^Home-([^-]*)-([^-]*)-([^-]*).html$ index.php?id=$1&cmd=$2&page=$3

Ten post edytował Reiven 23.09.2009, 19:51:30
Go to the top of the page
+Quote Post
Malinaa
post
Post #13





Grupa: Zarejestrowani
Postów: 577
Pomógł: 6
Dołączył: 21.07.2008

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


Cytat
dam Ci przykład:


Takich i podobnych przykładów jest dużo, dla mnie bez opisu znaczą one w zasadzie tyle samo.

Próbuję już na różne sposoby i bez efektu

Mam plik:
# PHP Settings
# inicjujemy rewrite engine
RewriteEngine On

RewriteBase /_serwis/produkty # w tym katalogu mam plik .htaccess
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php?oferta=$1 [L,QSA]

# jak dodac kolejne zmienne... &b=$2&c=$3&d=4
# RewriteRule ([^-]+)/([^-]+).html$ index.php?oferta=$1&js=$2 [L]
# RewriteRule ^([0-9])\/([^.]+)\.html$ /index.php?oferta=$1&js=$2 [L]
# RewriteRule ^Home-([^-]*)-([^-]*)-([^-]*).html$ index.php?oferta=$1&js=$2&c=$3 [L,QSA]
# RewriteRule ^strona/([^/.]+)/?$ index.php?strona=$1 [L]
# RewriteRule ^/([^/.]+)/?$ index.php?strona=$1 [L]

Nic z powyższego u mnie nie działa prawidłowo dla kilku zmiennych.

Jeżeli koś wie jak z takiego linka: index.php?oferta=produkt&b=1 zrobić ładny link, który będzie działać proszę o pomoc.



Ten post edytował Malinaa 23.09.2009, 23:24:17
Go to the top of the page
+Quote Post
erix
post
Post #14





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Nic z powyższego u mnie nie działa prawidłowo dla kilku zmiennych.

Pokaż przykładowy URL, jakim wywołujesz stronę (z kilkoma zmiennymi).
Go to the top of the page
+Quote Post
Malinaa
post
Post #15





Grupa: Zarejestrowani
Postów: 577
Pomógł: 6
Dołączył: 21.07.2008

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


Przykładowy url:

http://localhost/_serwis/produkty/index?of...firma=gamakatsu

Po zapisaniu obcieło link, edytuje i powtarzam w takiej formie

localhost/_serwis/produkty/index?oferta=haczki&typ=kotwice&firma=gamakatsu

Cały serwis znajduje sie w katalogu _serwis/

bezpośredni na localhost mam inną stronę

i nie potrafię napisać prawidłowego .htaccess dla strony w katalogu _serwis/

napisałem więc osobny .htaccess dla katalogu _serwis/ i tutaj jest ok, ale dla katalogu produkty/ gdzie mam drugi .htaccess no working?

Ten post edytował Malinaa 24.09.2009, 18:09:44
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 28.09.2025 - 01:43