Intereting Posts
Как создать объект Crypt :: RSA из модуля, экспоненты и частного экспонента? апострофы нарушают мой mysql-запрос в PHP Как очистить данные JSON, передаваемые через веб-сайты на целевом сайте Многократные разделители Php в разрыве Максимальное время выполнения 300 секунд превышено в pcntl_fork () Как ограничить количество результатов в Magento? Два необычных PHP-оператора, используемых вместе, чтобы получить цвет пикселя изображения, пожалуйста, объясните Фильтровать и сортировать многомерный массив с несколькими значениями Как следует распространять изменения в объектах MVC? Прерывистый HTTP 403 Запрещенная ошибка при вызове того же Ajax-кода php проверить, существует ли файл на внешнем doman (доступ к форме поддомен) Меню Codeigniter из базы данных Форматирование временной метки Продолжайте получать «Ежедневный лимит неисполненного использования превышен. Продолжение использования требует регистрации "при попытке Google плюс вход в мое веб-приложение Как преобразовать простой массив в ассоциативный массив?

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

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

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

 /search.html?searchterm=blah 

Что переадресовывает

 /search/blah/ 

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

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

основы:

  1. mysql_real_escape_string() поисковый mysql_real_escape_string()
  2. удалить все символы не Alpha / 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. есть и другие вещи, которые следует учитывать, но для новичков это хорошая отправная точка.

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

Единственный способ сделать это с помощью 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 не подходит для этого. Это добавило бы дополнительную клиентскую задержку для чего-то, что должно быть обработано на стороне сервера (переписывать), особенно если запрос правильно сконструирован в форме поиска.