Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Forward bez zmiany url w przeglądarce
Forum PHP.pl > Forum > PHP
athabus
Hej takie pytanie. W .htaccess mogę osiągnąć taki efekt dla swojej strony, że wpisując
www.example.com/jakis-fajny-adres mogę wczytać www.example.com?param=jakis-brzydki-adres

Czy da się podobny efekt osiągnąć dynamicznie w php? Czyli otworzyć w obrębie tej samej domeny inny adres niż wyświetla się w przeglądarce? Wiem, że można zrobić regułę w .htaccess, ale tu akurat to nie wchodzi w grę bo chcę robić zamiany adresów typu:

www.example.com/costam/inne-costam?id=4&color=red(...)&state=2 na www.example.com/czerwone-bluzki czyli nie da się z tego nijak zrobic reguly.

sazian
w .htaccess robisz przekierowanie wszystkiego co nie istnieje na index.php
Kod
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [PT]

a z $_SERVER['REQUEST_URI'] pobierasz to co było wpisane w przeglądarkę

o to chodzi ?
athabus
Niestety nie - to bardziej złożona sprawa. Ogólnie działam teraz ze sklepem prestashop i w nim są filtry, dzięki którym można wygenerować np. taką stronę:
http://fo.demo.prestashop.com/en/3-women?s...resses%2Fsize-m

ciąg od ?selected_filters... to ten zmienny parametr.

Ogólnie co do zasady te filtry są nie indeksowane w google żeby nie robić DC. Ale niektóre z nich są fajnymi zestawami pod pozycjonowanie i dla nich chciałbym porobić stałe adresy typu /spodniczki-damskie i w bazie mieć ten adres skojarzony z tym powyżej - czyli żeby wywołanie adresu /spodniczki-damskie bez zmiany url pokazało http://fo.demo.prestashop.com/en/3-women?s...resses%2Fsize-m

Za pomocą .htaccess udało mi się to już ogarnąć i mam adresy typu
/f/{nazwa-kategorii}/{filtry}
czyli np.
/f/3-women/categories-dresses/size-m

ale wolałbym mieć możliwość użycia zupełnie dowolnego adresu, który definiowałbym w bazie, żeby pozbyć się tych wszystkich slashy i ogólnie skrócić url (lepiej się pozycjonują krótkie adresy niż takie złożone). Niestety nie znam sposobu w jaki można osiągnąć w php ciche przekierowanie... I chyba po prostu nie można, ale liczyłem że ktoś zna jakiś sprytny sposób.

Wiem że są sposoby typu
  1. include "$url"

ale w tym przypadku to nie zda egzaminu, bo wygeneruje się strona bez personalizacji pod użytkownika, czyli nie będzie mógł nic dodać do koszyka itp.

//edit:

Ok problem się rozwiązał, bo Presta posiada możliwość zmiany kontrolera na takiej zasadzie jak np. w Symfony, czyli żadne przekierowanie nie jest potrzebne i kontroler można podmienić w trakcie wykonywania skryptu. Niemniej wątku nie zamykam, bo może ktoś wie jak to sprytnie zrobić w php.
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.