Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Przyjazne (ładne) linki
Forum PHP.pl > Forum > Przedszkole
Malinaa
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 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.

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

Malinaa
Dziękuje erix.
cojack
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]
Malinaa
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?
erix
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
Malinaa
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?

fander
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
Malinaa
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?
erix
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? 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.
Malinaa
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 sciana.gif

Reiven
dam Ci przykład:

RewriteRule ^Home-([^-]*)-([^-]*)-([^-]*).html$ index.php?id=$1&cmd=$2&page=$3
Malinaa
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.

erix
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).
Malinaa
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?
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.