Симпатичные URL для страниц результатов поиска

Вы не можете одновременно использовать обещание и обратный вызов (). Вы должны выбрать один или другой. Обычно лучше использовать обещание.

return oldItemsQuery.once('value').then(snapshot => {
   var updates = {};
   snapshot.forEach(child => {
     updates[child.key] = null;
   });
   return ref.update(updates);
});
9
задан tcooc 17 September 2015 в 17:48
поделиться

7 ответов

Этот вопрос, прежде всего, о дизайне URL и только случайно о перезаписи. После того как Вы разработали свои URL, чтобы быть прохладными, существует много способов заставить их работать включая перезапись на уровне сервера или использование веб-платформы, которая делает ОСНОВАННУЮ НА URL отправку (я думаю, что большинство современных веб-платформ делает это в эти дни).

Красота находится в глазу наблюдателя, но я действительно соглашаюсь с Вами, что много поисковых URL ужасно. Что делает их так? Я думаю основная вещь, которая делает URL ужасными, хлам в URL, который не добавляет семантическое значение, но является результатом детали реализации, как (.aspx) или другие расширения. Мое правило состоит в том, что, если URL возвращается (X), HTML, чем он не должен иметь расширения, иначе он должен.

В случае поиска факт - то, что стандартный поисковый синтаксис действительно добавляет значение: это указывает, что страница является поиском, это указывает, что аргументы называют и reorderable. Уродство, прежде всего, прибывает из? И = символы, но действительно что-либо еще, что Вы делаете, должно будет заменить эти те же символы более привлекательными символами как |-/, но за счет создания URL, непрозрачного к любому программному обеспечению, которое хочет проанализировать его как паук, кэширующийся прокси-сервер или что-то еще.

Поэтому думайте тщательно о не использовании стандартного синтаксиса и быть уверенными, что у Вас есть серьезное основание для того, чтобы сделать его. Я думаю в случае, где Ваши аргументы имеют естественный порядок и должны все быть определены, чтобы поиск имел смысл и компактен, Вы могли продвинуть его в URL. Например, в блоге URL Вы могли бы иметь:

/weblog/entries/2008
/weblog/entries/2008/11
/weblog/entries/2008/11/22

Для поиска, определяющего записи с 2008, ноябрь 2008, и 22-го ноября 2008, соответственно. Ваши URL должны быть уникальными и однозначными; иногда люди вставляют/-/для пропавших без вести поисковых параметров, которые я думаю, довольно компактно. Однако я постарался бы не продвигать потенциально длинные параметры, как текстовый запрос свободной формы, в URL./weblog/entries/containing/here%20is%20some%20freeform%20text%20blah%20blah не больше привлекателен что с помощью синтаксиса запроса.

Если Вы собираетесь использовать стандартный синтаксис запроса, то выбор имен аргумента, которые значимы, мог бы улучшить привлекательность, несколько. продукты/поиск? описание = "вздор", хотя дольше, вероятно, лучше, чем продукты/поиск? q = "вздор". В этой точке это - убывающая доходность, я думаю.

7
ответ дан 4 December 2019 в 13:51
поделиться

MVC (Образцовый Контроллер Представления) платформа специально разработан для занятия этой проблемой. Это использует форму перезаписи URL для перенаправления действий к страницам и обеспечивает просто функциональность, которую Вы ищете. Это делает обработку симпатичными URL бриз.

Относительно длины URL идентификатор все еще использует симпатичные URL, но особенно длинный URL может быть признаком, что можно хотеть пересмотреть группировку объектов, изменить классификацию, если Вы будете так продукты / {ИМЯ} / {Адрес} без посреднических частей URL.

Примеры платформы MVC могут быть найдены в:

.NET - http://www.asp.net/mvc/

PHP - http://www.phpmvc.net/

Java - http://struts.apache.org/

1
ответ дан 4 December 2019 в 13:51
поделиться

Можно получить "симпатичные" URL, но не через самое симпатичное из средств..

Можно настроить URL, чтобы быть чем-то как:

/Products/Search/Type/{producttype}/Name_{name}/Address_{address}

Затем mod_rewrite управляет чем-то как:

RewriteRule ^Products/Search/Type/([a-z]+)(.*)?$ product_lookup.php?type=$1&params=$2 [NC,L]

Это даст Вам 2 параметра в Вашем product_lookup файл:

$type = {producttype}
$params = "/Name_{name}/Address_{address}"

Можно затем реализовать некоторую логику в Вашем product_lookup.php файл для цикличного выполнения через $params, разделение его на "/", маркирование его согласно тому, что перед "_", и затем использование получающихся параметров в Вашем поиске как нормальный, например.

// Split request params first on /, then figure out key->val pairs
$query_parts = explode("/", $params);
foreach($params as $param)
{
    $param_parts = explode("_", $param);
    // Build up associative array of params
    $query[$param_parts[0]] = $param_parts[1];
}
// $query should now contain the search parameters in an assoc. array, e.g.
// $query['Name'] = {name};

Наличие параметров как "симпатичные" URL, а не СООБЩЕНИЯ позволяет пользователям отметить конкретные поиски более легко.

Пример этого в действии http://www.property.ie/property-for-sale/dublin/ashington/price_200000-550000/beds_1/ - выбранные параметрические усилители пользователя обозначены "_" (диапазон цен и кровати), который может быть переведен внутренне в то, какой бы ни формат параметрического усилителя Вам нужно при хранении хорошего читаемого URL.

Код выше является тривиальным примером без проверки ошибок (разделители жулика и т.д. во входе), но должен дать Вам общее представление о том, где запустить.

Это также принимает стек LAMP (Apache для mod_rewrite и PHP), но могло быть сделано в том же направлении с помощью asp.net и IIS mod_rewrite эквивалентный.

5
ответ дан 4 December 2019 в 13:51
поделиться

Вы могли использовать URL rewriter или создать Ваше собственное. В каком языке Ваш сайт разрабатывается?

0
ответ дан 4 December 2019 в 13:51
поделиться

У нас есть подобная перезапись URL и использование IIS 6, нам определили перенаправление как:

/content.aspx? $S&$P url=

Это берет URL формы

/content/page/press_room и делает его в формате

/content.aspx/url =/page/pressroom&

Я не уверен в полных synyax опциях IIS, имеет, но я уверен, что Вы хотите, может быть сделан похожим способом.

1
ответ дан 4 December 2019 в 13:51
поделиться

Как упомянуто прежде - использование Сообщения HTTP было бы лучшим, но затем Вы теряете способность к людям отправить ссылку людям/закладке оно. Отъезд строки запроса в URL не будет слишком плохим. У меня есть настроенный так, чтобы строка URL была похожа на это:

http://example.com/search/?productType={producttype}&name={name}&address={address}

И затем для нумерации страниц результатов поиска добавляют в номере страницы перед строкой запроса (таким образом, строка запроса настраиваема в случае необходимости.

и т.д...

В конце дня - король поискового 'Google' не возражает оставлять строку запроса в URL, таким образом, это не может быть слишком плохо :)

1
ответ дан 4 December 2019 в 13:51
поделиться

Можно найти ответ о Маршрутизации в.NET здесь:

Что лучший метод должен достигнуть динамической Перезаписи URL в ASP.NET?

Там можно найти различные ресурсы на предмете.

0
ответ дан 4 December 2019 в 13:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: