sernik
29.04.2016, 13:04:54
Witam,
chciałbym uzyskać następujący efekt:
domena.com/product/index.php - w pliku index będzie generowana lista z produktami (nazwa, ceną, zdjęciem itp.) z możliwością przejścia do szczegółowej karty produktu
domena.com/product/product.php - plik szczegółowej karty produktu
Nie wiem jednak w jaki sposób uzyskać efekt adresu do karty produktu na podstawie nazwy produktu np.
produkt o nazwie - Laptop T500 miałby mieć adres domena.com/product/laptop-t500.html, gdzie zawartość pliku .html była by generowana na podstawie product.php
Czy byłby ktoś w stanie podsunąć mi jakieś wskazówki??
Z góry dziękuję za informacje.
Pozdrawiam
Wazniak96
29.04.2016, 13:10:49
Poczytaj o przyjaznych linkach czyli .htaccess
herWALDI
29.04.2016, 13:37:23
sernik
30.04.2016, 22:11:02
Witam, nadal próbuje uzyskać zamierzony efekt ale niestety się nie udaje :<
- serwer postawiony jest na nginx
chcę adres np. domena.com/test/product/product.php?id=2 ustawić jako domena.com/test/product/2.html
W pliku sites-available/default dla nginx dodałem zapis:
location /product {
rewrite ^/product-([^-]*).html$ /product.php?id=$1 break;
}
Niestety nie działa.. W czym może tkwić błąd?
kapslokk
30.04.2016, 22:15:10
W tym, że rewrite ^/product-([^-]*).html$ /product.php?id=$1 break;
to raczej regułka na product-2.html a nie 2.html
spróbuj:
^/([0-9]+)\.html$ /product.php?id=$1 break;
sernik
30.04.2016, 22:19:32
Dzięki za sugestię, aczkolwiek taki zapis też nic nie zmienił w adresie. Zresztą jakby zamieniło na adres product-2.html to też byłoby dobrze

z tym, że tutaj po prostu te zmiany nie dają żadnego efektu..
Nadal strona wyświetla się tylko pod adresem product.php?id=2
avalanche
1.05.2016, 11:50:14
z ciekawości zapytam: czy oprócz htaccess zmieniałeś coś w kodzie?
samo grzebanie w regułach tłumaczenia nic nie da, jeśli w kodzie nie masz tego zaimplementowanego
sernik
1.05.2016, 13:06:08
@avalanche
Serwer jest skonfigurowany na nginx i nie korzystam z .htaccess..
O jaką implementację Ci chodzi?? - czy w adresie url, który chcę zmienić pojawiają się zmienne? Jakbyś mógł to troszeczkę rozjaśnić to byłbym wdzięczny.
avalanche
1.05.2016, 13:08:57
chodzi mi o to, że jeśli konfigurujesz serwer do odczytu według wyrażeń regularnych, to sama konfiguracja nie sprawi, że zmienią się adresy wytwarzane przez PHP.
może to oczywiste, ale wolę się upewnić
sernik
1.05.2016, 13:14:24
Niestety nigdzie nie udało mi się odszukać informacji na ten temat, co powinienem zawrzeć w pliku .php aby te adresy się zmieniały..
Jest tak jak na początku wspomniałeś, dokonywałem tylko modyfikacji w pliku konfiguracyjnym nginx, a w .php nic nie ruszałem.
avalanche
1.05.2016, 13:50:57
Jeśli nie korzystasz z frameworka, sam musisz podstawić te adresy w odpowiednich miejscach. Samo się nic nie załatwi.
Jeśli korzystasz z frameworka, poszukaj informacji o przyjaznych url-ach na jego stronie.
sernik
1.05.2016, 14:52:29
Cytat(avalanche @ 1.05.2016, 14:50:57 )

Jeśli nie korzystasz z frameworka, sam musisz podstawić te adresy w odpowiednich miejscach. Samo się nic nie załatwi.
Czy mógłbyś mnie nakierować na jakiś przykład takiego kodu??
Z góry dzięki za informacje
avalanche
1.05.2016, 14:56:53
Jaki przykład kodu? Przecież to po prostu zamiana łączy, jakie masz w aplikacji...
sernik
2.05.2016, 10:42:23
Temat do zamknięcia.
Udało się uzyskać założony efekt dodaniem reguły do pliku konfiguracyjnego nginx według sugestii kapslokk:
location /product {
rewrite ^/product/([0-9]+)\.html$ /product.php?id=$1;
}
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.