Мне трудно найти конкретный ответ на то, что я ищу.В основном я работаю над созданием красивых URL.По большей части мне удалось заставить его работать, когда я знаю количество переменных, которые должен содержать URL, например:
Исходный URL:
index.php?lang=en&show=contact-us
htaccess:
RewriteRule ^([a-z]+)/([a-z-]+)$ index.php?lang=$1&show=$2 [NC,L]
новый URL:
/en/contact-us
И у меня есть несколько таких, как этот для "известного количества переменных", я покажу вам другой пример:
originalURL:
index.php?lang=en&show=for-rent-details&object=8500479
htacces:
RewriteRule ^([a-z]+)/for-rent/([0-9]+)/([0-9a-z-]+)$ index.php?lang=$1&show=for-rent-details&id=$2&name=$3 [NC]
новый URL:
/en/for-rent/8500479/rocha-tower-14e
Но теперь проблема в том, когда пользователь выполнит поиск.Это означает, что URL будет составлен в зависимости от количества элементов, которые выберет клиент.По умолчанию существует 5 переменных:
Исходный URL:
index.php?lang=en&show=filter&beachDistance=500&roomQty=2&sortRent=asc
htaccess:
RewriteRule ^([a-z]+)/([a-z-]+)/([0-9]+)/([0-9]+)/([a-z]+)$ index.php?lang=$1&show=$2&beachDistance=$3&roomQty=$4&sortRent=$5 [NC]
Новый URL:
/en/filter/500/2/asc
Этошаблон URL по умолчанию для функции поиска.Если пользователь ничего не выбирает, это переменные по умолчанию и соответствующие значения, которые отправляются.Но в случае, если пользователь хочет выбрать некоторую дополнительную информацию (города или достопримечательности), они появятся после этого:
рабочий URL:
index.php?lang=en&show=filter&poi-1=1&poi-3=3&beachDistance=500&roomQty=2&sortRent=asc
Я хочу, чтобы это было:
/en/filter/1/3/500/2/asc
в то время как другой поиск может иметь:
/en/filter/1/3/44/13/90/500/2/asc
и, возможно, другой со следующими переменными:
/en/filter/1/3/9/2/500/2/asc
Так вот, что я имею в виду под неизвестным«количество переменных», этот htaccess не будет точно знать количество, но я хочу, чтобы он все равно переписывал URL, несмотря ни на что.Я читал о правиле флага QSA, но немного не уверен, как его реализовать.