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 — НЕТ
Вуаля. Дублей нет, поиск работает, все счастливы.
Может данная заметка сэкономит вам время или же спасет от гнева заказчика.
Техническая поддержка MODX
Сайт лежит, тормозит или остался без разработчика?
Переезд с MODX 2 на 3, PHP 7 на 8, скорость и безопасность. Поддержка со сроками и ответственностью, а не совет в чате.
Подробнее
Реклама
Комментарии: 5
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
У меня там еще помимо всего прочего почти 2000 301 редиректов 301 со старыми URL на новые.
с htaccess мне кажется проще, чем с Redirect — меньше действий и времени.
Очень буду рад информации.