Мне нравится использовать "_", потому что это символ, наиболее похожий на пробел, который делает URL читаемым.
Однако предоставленные вами URL не выглядят действительно РЕСТАЛЬНЫМИ. URL должен представлять ресурс, но в вашем случае он представляет поисковый запрос. Поэтому я бы сделал что-то вроде этого:
/people/{first}_{last}
/people/{first}_{last}_(2) - in case there are duplicate names
В этом случае вам необходимо сохранить слаг ({first}_{last}
, {first}_{last}_(2)
) для каждой пользовательской записи. Еще один способ добавить идентификатор, так что вам не придется беспокоиться о слизняках:
/people/{id}-{first}_{last}
А для поиска вы можете использовать не RESTful URL:
/people/search?last={last}&first={first}
Они будут отображать список результатов поиска, в то время как URL-адреса над страницей для конкретного человека.
Я не думаю, что есть смысл делать поисковые URL RESTful, пользователи, скорее всего, захотят делиться ссылками на страницу определенного человека, а не на страницы результатов поиска. Что касается поисковых систем, избегайте использования одного и того же контента для нескольких URL, и вам даже следует запретить индексирование страниц результатов поиска в файле robots.txt
.