Хорошие поисковые URL - PullRequest
       1

Хорошие поисковые URL

3 голосов
/ 03 февраля 2011

У меня есть форма, которая отправляется на страницу поиска. Я могу справиться с вещами MOD_REWRITE на заднем конце, но хочу знать, как лучше всего получить страницу результатов поиска в хорошем формате.

Лучше всего получить отправку формы, а затем перенаправить на более привлекательную структуру URL. В следующем примере пользователь ищет blah.

/search.html?searchterm=blah

Который перенаправляет на

/search/blah/

Или я могу (мой предпочтительный вариант) сделать это с помощью javascript (или jQuery) как-то после того, как пользователь нажмет кнопку отправки?

Ответы [ 6 ]

4 голосов
/ 03 февраля 2011

определенно вы должны прочитать этот урок:

основы:

  1. mysql_real_escape_string() поисковый термин
  2. удалить все не альфа / Num символы
  3. поместите + между каждым соответствующим словом
  4. SELECT MATCH AGAINST || IN BOLEAN MODE || LIKE

mod_rewrite

RewriteRule ^search/([^/\.]+)$ search.php?q=$1

PS: часть PHP в ссылке немного устарела, поэтому, например, вы должны использовать preg_replace вместо ereg_replace, и вы также можете избежать дополнительного шага зачистка пространства, делая все это с первой попытки; Вы также можете проверить на stopwords и уточнить ваш regex, как предложено, например: foo-bar. Есть и другие вещи, но для новичка это хорошая отправная точка.

2 голосов
/ 04 февраля 2011

Из вашего вопроса я понимаю, вы хотите, чтобы браузер перешел на поиск / бла.Вы не хотите, чтобы вас пересылали.

Единственный способ сделать это с помощью javascript, поскольку форма с методом GET работает по определению не так, как вы этого хотите.

Я хотел бы оставить форму как есть и использовать javascript для перехвата нажатия кнопки, а затем перейти к "search/"+escapedSearchTerm.Преимущество этого заключается в том, что если javascript недоступен, метод по умолчанию все еще активен, а сайт все еще работает.

Задержка действительно должна быть пренебрежимо мала.

0 голосов
/ 03 февраля 2011

GET-запросы довольно стандартны для поисковых систем.Наличие URL-адреса, подобного / search? Q = blah, является вполне нормальным и ожидаемым поведением, и вы должны быть в состоянии сделать это, используя mod_rewrite, как вы предлагали.

JavaScript / jQuery не является хорошим подходом для этого.Это добавило бы дополнительную задержку на стороне клиента для чего-то, что должно быть обработано на стороне сервера (переписать), особенно если запрос правильно составлен в форме поиска.

0 голосов
/ 03 февраля 2011

Я думаю, будет лучше, если действие onclick() вашей кнопки отправки изменит свойство action вашей формы на что-то вроде /search/blah/, не позволяющее пользователям вашего сайта видеть этот ужасный URL.

0 голосов
/ 03 февраля 2011

Я бы не использовал JavaScript для этого. Это не совсем необходимо. Вероятно, я бы просто оставил все просто с search.php?q=blah, но если для вас важны чистые URL-адреса, просто перепишите search.html?searchterm=blah на /search/blah/, как вы упомянули.

Я не думаю, что действительно есть "лучший" способ отформатировать ваш URL. Я предполагаю, что это сводится к личным предпочтениям, если только с использованием mod_rewrite не связаны проблемы с производительностью, о которых я не знаю.

0 голосов
/ 03 февраля 2011

Какой API поиска вы вызываете?

Вы должны иметь возможность использовать Javascript или jQuery для получения результатов поиска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...