Mod Rewrite z dwoma lub jedna zmienna

0

Przepraszam, że w tym dziale, ale nie widziałem gdzie to pytanie dopasować.

Mam problem odczytwaniem jednej lub dwoch zmiennych z linku

Mam nginx dlatego zapis reguł może się trochę różnić niż w apache.

moja reguła: rewrite ^/([^-]+)/([^-]+)$ /index.php?profil=$1&fotka=$2 last;

kiedy wpisze www.strona.pl/ania/2 to wszystko jest ok i wypisuje zmienne na stronie, ale gdy usunę drugą zmienną i wpisze tylko www.strona.pl/ania to juz wyrzuca błąd.
Jak sobie poradzić z wyświetlaniem jednej lub dwóch zmiennych?
Za wszystkie rady z góry dziękuje :)

0

Rozumiem że tego rewrite'a używasz do tego by mieć ładniejsze linki tak?

Jeśli tak - to przyjrzyj się jak wygląda htaccess we frameworkach. Po linku jaki dałeś wnioskuje że tworzysz coś na kształt portalu społecznościowego. Obadaj te narzędzie i zobacz jak tam jest wykonany routing
https://humhub.com
Polecam skorzystać z testowej instancji tego - robi się to w locie i mógłbyś potestować sobie działanie tego, nawet bez stawiania lokalnego środowiska.

0

Dzięki wielkie, ale chciałbym zrozumieć chociaż trochę jak pisać rewrity, a nie na ślepo kopiować.

1

Ok, rozumiem :) bardzo dobre podejście. Czy w takim razie szukałeś w google'ach czegoś takiego jak mod_rewrite with 2 params
pierwszy wynik myślę że Ci pomoże. A jeśli nadal chcesz zgłębiać temat - no to już zostaje nauka wyrażeń regularnych oraz przestudiowanie dokumentacji apache'a
https://stackoverflow.com/questions/27125337/multiple-get-params-in-htaccess-mod-rewrite

Odnośnie Twojego pierwszego posta - to wrzucaj też treść błędu :)

0

Dzięki tego szukałem, ale teraz mam problem z ładowaniem css :D Szkoda, ze nie ma zadnego szerokiego tutorialu po polsku o przepisywaniu.

1

Odnośnie css'ów - wykluczyłeś pliki i foldery w htaccessie?

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

0

Dzięki! działa wszystko

1 użytkowników online, w tym zalogowanych: 0, gości: 1