Этот вопрос касается, прежде всего, дизайна URL и только случайно касается переписывания. После того как вы разработали свои URL-адреса для круто , существует множество способов заставить их работать, включая переписывание на уровне сервера или использование веб-инфраструктуры, которая выполняет диспетчеризацию на основе URL (я думаю, что большинство современных веб-структур сделать это в эти дни).
Красота в глазах смотрящего, но я согласен с вами, что многие поисковые URL ужасны. Что делает их такими? Я думаю, что основная вещь, которая делает URL-адреса ужасными, - это бессмысленность URL-адреса, которая не добавляет семантического значения, но является результатом деталей реализации, таких как (.aspx) или других расширений. Мое правило состоит в том, что если URL возвращает (X) HTML, то он не должен иметь расширения, в противном случае он должен.
В случае поиска, тот факт, что стандартный синтаксис поиска добавляет значение: это указывает, что страница является поиском, это указывает, что аргументы названы и переупорядочены. Уродство в основном происходит от символов? & =, Но на самом деле все, что вы делаете, это заменяет эти же символы более привлекательными символами, такими как | - /, но за счет непрозрачности URL-адреса для любого программного обеспечения, которое хочет его проанализировать. как паук, кеширующий прокси-сервер или что-то еще.
Так что подумайте о том, чтобы не использовать стандартный синтаксис, и убедитесь, что у вас есть веская причина для этого. Я думаю, что в случае, когда ваши аргументы имеют естественный порядок и , все должны быть определены, чтобы поиск имел смысл, и компактны, вы можете вставить его в URL. Например, в URL-адресе блога у вас может быть:
/weblog/entries/2008
/weblog/entries/2008/11
/weblog/entries/2008/11/22
Для поиска, определяющего записи за 2008, ноябрь 2008 и 22 ноября 2008 соответственно. Ваши URL должны быть уникальными и однозначными; иногда люди вставляют / - / для пропущенных параметров поиска, что я считаю довольно компактным. Однако я бы не вставлял в URL потенциально длинные параметры, такие как текстовый запрос произвольной формы.
/ weblog / записи / содержащий / здесь% 20is% 20some% 20freeform% 20text% 20blah% 20blah не так привлекателен, как использование синтаксиса запроса.
Если вы собираетесь использовать стандартный синтаксис запроса, то выбор значимых имен аргументов может несколько повысить привлекательность. products / search? description = "blah", хотя и дольше, вероятно, лучше, чем products / search? q = "blah". Я думаю, что в этот момент отдача уменьшается.