kona79
24.11.2014, 23:32:13
Witam, mam spore trudności z ustawieniem przyjaznych linków. Przeglądałem dużo materiałów a mimo to nie udało mi sie...
na swojej stronie w index używam :
if (isset($_GET['page']))
{
require_once '' . $_GET['page'] . '.php';
}
menu:
<a href="?page=firma">O nas</a>
<a href="?page=kontakt">kontakt</a>
w tej chwili struktura wygląda tak www.adres.pl/?page=firma
chcę osiągnąć taka strukture www.adres.pl/firma
.htaccess działa poprawnie, sprawdzałem
Bardzo proszę o pomoc.
kreatiff
24.11.2014, 23:44:48
Ustaw bezpośrednio w kodzie strony:
<a href="./firma">O nas</a>
<a href="./kontakt">kontakt</a>
A .htaccess załatwia sprawę wyświetlania (przepisywania adresów) podstrony ?page=firma przy wejściu na /firma, czy ?page=kontakt po wyświetleniu /kontakt, zależnie od reguł w nim się znajdujących.
dodane:
Ogólnie to ja preferuję ruter w php, a .htaccess jedynie ma kierować cały ruch do index.php.
Dzięki temu unikamy od razu problemów z dublowaniem adresów w .htaccess (że strona działa zarówno pod ?page=kontakt i /kontakt) i nie bawimy się w dodatkowe regułki by tego unikać.
kona79
24.11.2014, 23:54:10
mógłbyś mi pokazać to na moim przykładzie? po zmianie menu link wygląda ładnie ale nie znajduje strony. Czy takie rozwiązanie uruchamia pod stronę przez index?
kreatiff
25.11.2014, 00:12:56
Jeśli nie znajduje strony, to znaczy, że nie działa przepisywanie linków w .htaccess.
W .htaccess musi się znaleźć coś takiego:
RewriteRule ^kontakt$ index.php?page=kontakt [NC,L]
albo bardziej ogólnie (ten przykład trzeba sobie dopracować, by we wzorze (.*) puszczał tylko znaki alfanumeryczne i interpunkcyjne jeśli się trafią, zamiast dowolnych znaków)
RewriteRule ^(.*)$ index.php?page=$1 [NC,L]
kona79
25.11.2014, 00:58:57
działa super

tylko że na sztywno.
Próbuje rozkminić
RewriteRule ^(.*)$ index.php?page=$1 [NC,L]
Fatal error: require_once() [function.require]: Failed opening required 'index.php.php' (include_path='.') w require_once '' . $_GET['page'] . '.php';
Spawnm
25.11.2014, 01:38:14
Zdajesz sobie sprawę że twój kod includowania podstron jest niebezpieczny? Poczytaj o LFI/RFI
https://www.owasp.org/index.php/Testing_for..._File_Inclusion
kona79
25.11.2014, 22:49:17
dzięki za poradę.
rozwiązałem to w tej chwili na sztywno, czyli do każdego linku warunek.
Mam jeszcze ogromną prośbę mam coś takiego jak przesyłanie po GET danych do formularza.
<a href="./kontakt&produkt='.$produkt.'">Zadaj pytanie »</a>
jak dokładnie do tego linku będzie wyglądać RewriteRule?
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.