Rewrite rule + mSearch2
Доброго дня.
Подумал выложить информацию, может кому пригодится (ибо у меня на выяснение причин и устранение ушла неделя).
Итак, у меня на сайте есть замечательный плагин mSearch2 от Василия Наумкина, ну все его и так наверняка хорошо знают по его отличным дополнениям.
И вот однажды, ни с того ни с сего, форма поиска стала на любые поисковые фразы реагировать исключительно как "Найдено 0 результатов".
Проверил все чанки/настройки и т.п. Снес индекс и проиндексировал заново — результата тоже ноль.
Беда крылась там, где её меньше всего ожидали. Для того чтобы исключить дубли страниц на сайте для поисковых систем (с "/" или без "/") на конце URL в .htaccess было внесено стандартное правило.
Если вы используете mSearch2 и внимательно посмотрите на URL после поиска, то заметите, что после search нет знака /. Но у нас он автоматом проставляется и соответственно ничего не работает.
Не знаю правильно ли я решил задачу, но во всяком случае оно работает именно так как надо.
1) в .htaccess вместо предыдущего правила вставил это:
3) В настройках системы — friendly_urls_strict — НЕТ
Вуаля. Дублей нет, поиск работает, все счастливы.
Может данная заметка сэкономит вам время или же спасет от гнева заказчика.
Подумал выложить информацию, может кому пригодится (ибо у меня на выяснение причин и устранение ушла неделя).
Итак, у меня на сайте есть замечательный плагин mSearch2 от Василия Наумкина, ну все его и так наверняка хорошо знают по его отличным дополнениям.
И вот однажды, ни с того ни с сего, форма поиска стала на любые поисковые фразы реагировать исключительно как "Найдено 0 результатов".
Проверил все чанки/настройки и т.п. Снес индекс и проиндексировал заново — результата тоже ноль.
Беда крылась там, где её меньше всего ожидали. Для того чтобы исключить дубли страниц на сайте для поисковых систем (с "/" или без "/") на конце URL в .htaccess было внесено стандартное правило.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]Т.е. любой УРЛ, который бы заканчивался на конце без slug / — закрывался бы. Отлично — от дублей мы избавились, зато получили в поисковом «запросе» URL такого вида: site.com/search/?query=Если вы используете mSearch2 и внимательно посмотрите на URL после поиска, то заметите, что после search нет знака /. Но у нас он автоматом проставляется и соответственно ничего не работает.
Не знаю правильно ли я решил задачу, но во всяком случае оно работает именно так как надо.
1) в .htaccess вместо предыдущего правила вставил это:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1/ [L,QSA]2) В настройках админки: Типы содержимого -> HTML — Расширение файла /3) В настройках системы — friendly_urls_strict — НЕТ
Вуаля. Дублей нет, поиск работает, все счастливы.
Может данная заметка сэкономит вам время или же спасет от гнева заказчика.
Комментарии: 5
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
У меня там еще помимо всего прочего почти 2000 301 редиректов 301 со старыми URL на новые.
с htaccess мне кажется проще, чем с Redirect — меньше действий и времени.
Очень буду рад информации.