Najlepszym rozwiązaniem będzie napisać parser zapytań. Zobacz przykłady w przykładowej strukturze TinyMVC lub serach google dla routera, kontrolera front, dispatchera itp.
Może być trudno osiągnąć, ponieważ masz niestandardowe nazwy parametrów, takie jak "c" i "a". Więc trzeba napisać jakąś mapę, która będzie przypisywać ludzkich nazw parametrów czytelny dla nazw zmiennych jak:
'city' => 'c'
'name' => 'a'
Twój parsera zapytanie może również automatycznie przypisać zmienne w pewnym sensie jak:
/domain/services/c=london/n=peter/
Ten rodzaj Dyspozytor może uruchamiać wszystkie linki, jeśli zmienisz wszystkie żądania do jednego pliku php w pliku .htaccess (zazwyczaj index.php), wyłączając obrazy, swf, css, js itp.
To Twoja decyzja, jak zaplanować routing URL-ów logika. Pamiętaj o kodowaniu znaków specjalnych dla ante URL.
Należy rozważyć uzyskanie wartości parametrów w porządku numerycznym, takich jak "pierwszy parametr", "drugi parametr", aby utworzyć uniwersalny wzór adresu URL, taki jak/moduł/akcja/parametr1/parametr2, itd. Tak więc zawsze można uzyskać parametr według numeru, niezależnie od jego nazwy.
Oczywiście można pisać polecenia w htaccess, ale byłoby to problematyczne przy dodawaniu nowych akcji.
Jeśli chcesz podnieść te "idealne" adresy URL, nawet jeśli użytkownik kliknie link, prześle formularz itp., Możesz nie tylko zmienić .htaccess lub wpisać router.Trzeba też zmienić linki/działań w kodzie lub napisać do budowania adresów URL jak
<a href="<?php buildUrl('modulke' , 'action' , 'param1' , 'param2'); ?>">aaaa</a>
Przysłowie, którym posługiwałem się od lat przy tworzeniu reguł przepisywania, jest jak CSS, dopasuj najbardziej specyficzny (najdłuższy) pierwszy. To może nie być najbardziej "słuszne", ale dobrze mi służyło. – Uberfuzzy