У меня есть форма, которая отправляется на страницу поиска. Я могу обрабатывать файлы MOD_REWRITE на задней панели, но хочу знать, как лучше всего получить страницу с результатами поиска в хорошем формате.
Лучше всего получить представление формы, а затем перенаправить на более удобную структуру URL. В следующем примере пользователь ищет blah
.
/search.html?searchterm=blah
Что переадресовывает
/search/blah/
Или я могу (мой предпочтительный вариант) сделать это с помощью javascript (или jQuery) каким-то образом после того, как пользователь нажмет кнопку отправки?
определенно вы должны прочитать этот урок:
основы:
mysql_real_escape_string()
поисковый mysql_real_escape_string()
+
между каждым совпадающим словом 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. есть и другие вещи, которые следует учитывать, но для новичков это хорошая отправная точка.
Из вашего вопроса, который я собираю, вы хотите, чтобы браузер напрямую отправился на поиск / бла. Вы не хотите, чтобы вас переправляли.
Единственный способ сделать это с помощью javascript, так как форма с методом GET работает по определению не так, как вы хотите.
Я хотел бы оставить форму как есть, и использовать javascript для перехвата нажатия кнопки, а затем перейти к "search/"+escapedSearchTerm
. Это имеет то преимущество, что если javascript недоступен, метод по умолчанию все еще срабатывает, и сайт все еще работает.
Задержка на самом деле должна быть пренебрежимо для этого.
Какой API поиска вы вызываете?
Вы должны использовать Javascript или jQuery для поиска результатов поиска.
Я бы не использовал JavaScript для этого. Это не обязательно. Я бы просто оставил это просто с search.php?q=blah
, но если для вас важны чистые URL-адреса, просто search.html?searchterm=blah
to /search/blah/
как вы упомянули.
Я не думаю, что действительно существует «лучший» способ отформатировать ваш URL. Я предполагаю, что это сводится к личным предпочтениям, если нет проблем с производительностью, связанных с использованием mod_rewrite
о котором я не знаю.
Я думаю, будет лучше, если действие onclick()
вашей кнопки отправки изменит свойство действия вашей формы на что-то вроде /search/blah/
чтобы пользователи вашего сайта не увидели этот уродливый URL-адрес.
Запросы GET являются довольно стандартными для поисковых систем. Наличие URL-адреса, например, search? Q = blah – довольно нормальное и ожидаемое поведение, и вы должны иметь возможность выполнить это с помощью mod_rewrite, как вы предложили.
JavaScript / jQuery не подходит для этого. Это добавило бы дополнительную клиентскую задержку для чего-то, что должно быть обработано на стороне сервера (переписывать), особенно если запрос правильно сконструирован в форме поиска.