У меня есть запрос GET, так как
http://www.example.com/index.php?location=location&category=category&keyword=any+keyword
У меня есть преобразовал этот URL в
http://www.example.com/location/category/any+keyword
, но проблема в том, что мой URL постоянно меняется.
Если пользователь вводит только ключевое слово, тогда URL будет иметь вид http://www.example.com/any+keyword
, и мне нужно будет искать только по названию и описанию.
Если пользователь вводит только категорию, URL-адрес будет иметь вид http://www.example.com/category
, и мне нужно будет искать только в категории.
Если пользователь вводит местоположение и ключевое слово, URL будет иметь вид http://www.example.com/location/any+keyword
, и мне нужно будет выполнить поиск только по местоположению, названию и описание и наоборот.
... любая помощь приветствуется.
Возможно, вы могли бы сделать что-то подобное, если бы в параметре ключевого слова действительно был знак "+". Всегда нужно иметь уникальные шаблоны:
RewriteRule ^(.+\+.+)/?$ index.php?keyword=$1 [NC,L]
RewriteRule ^(.+)/?$ index.php?category=$1 [NC,L]
RewriteRule ^(.+)/(.+\+.+)/?$ index.php?category=$1&keyword=$2 [NC,L]
RewriteRule ^(.+)/(.+)/(.+\+.+)/?$ index.php?location=$1&category=$2&keyword=$3 [NC,L]
Если бы не было знака «+» каждый раз и это могла бы быть обычная строка, это было бы невозможно, потому что ключевое слово и категория будут иметь один и тот же шаблон регулярного выражения.
Судя по всему, URL-адрес может состоять из любой комбинации «местоположение», «категория» и / или «любое + ключевое слово»? (Хотя в вашем примере явно не показано, что «категория» и «любое ключевое слово +» могут использоваться вместе? Это немного уменьшило бы двусмысленность .)
Если только не существует заметной разницы между " location "," category "(и" any + keyword ") значения или количество различных местоположений и категорий достаточно малы, чтобы вы могли их фактически перечислить (жестко запрограммировать) их в вашей директиве, тогда нет никакого способа справиться с этими различиями URL-адресов только в .htaccess
. Они неоднозначны .
Если возможные значения «местоположения» и «категории» уникальны, то, возможно, вы могли бы переписать URL-адрес вашего внутреннего приложения, и ваше приложение выполнит необходимые поиски, чтобы определить, является ли это местоположение »,« категория »или нет (например,« ключевое слово »). Но это потенциально требует гораздо больше работы (работает как вычислительная мощность ) и не масштабируется, поэтому не рекомендуется.
Реально, учитывая ваш пример URL, единственные потенциально допустимые URL, которые могут быть получены отсюда будет:
http://www.example.com/location
http://www.example.com/location/category
http://www.example.com/location/ category / any + keyword
, но проблема в том, что мой URL-адрес постоянно меняется
Изменяется в вашем приложении? Или входящие ссылки? В первом случае вам необходимо устранить неоднозначность в вашем приложении и создать согласованную структуру URL-адресов.