Почему мой код Redirect 301 в .htaccess не выполняет перенаправление правильно?

Как исправить редирект в файле .htaccess, чтобы адрес https://www.crawler.pro/news/2021/produser-dlya-ma... корректно перенаправлялся с адреса /news/2021/professor-bez-shtanov.html, при этом адрес ?q=news/2021/professor-bez-shtanov.html больше не появлялся и страница открывалась корректно?
  • 13 декабря 2023 г. 21:47
Ответы на вопрос 2
Если ваш код Redirect 301 в файле .htaccess не выполняет перенаправление правильно, есть несколько возможных причин и вариантов для решения проблемы.

1. Проверьте синтаксис правила перенаправления Redirect 301. Убедитесь, что вы правильно указали исходный и целевой URL-адреса, и что правильно используете относительные или абсолютные пути в URL-адресах.

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

3. Проверьте, есть ли другие правила перенаправления или модификации URL-адресов в вашем .htaccess-файле или конфигурационных файлах сервера. Некоторые другие правила или настройки могут затруднять или переопределять ваши перенаправления.

4. Вместо использования Redirect 301 попробуйте использовать RewriteRule с флагом [R=301]. Вот пример такого правила:

   RewriteEngine On
   RewriteRule ^news/2021/professor-bez-shtanov.html$ https://www.crawler.pro/news/2021/produser-dlya-ma... [R=301,L]

   Поместите эту строку в ваш .htaccess-файл и убедитесь, что она указывает на правильные URL-адреса.

5. Если все остальное не сработает, возможно, проблема связана с вашей конфигурацией сервера или хостинг-провайдера. Обратитесь к своему хостинг-провайдеру или администратору сервера для получения дальнейшей помощи.

Помните, что после внесения изменений в .htaccess-файл, возможно потребуется очистить кэш вашего браузера или использовать инкогнито-режим, чтобы увидеть обновленные результаты перенаправления.
Redirect это директива mod_alias . 
RewriteEngine и RewriteBase это mod_rewrite .
Очевидно используете одновременно два разных модуля для редиректов.
Где-то в .htaccess есть правило примерно такое RewriteRule (.*) index.php?q=$1 [L]
Ну вот при совместной работе mod_rewrite и mod_alias получаете лишнее ?q=
Просто используйте для редиректов какой-то один модуль, а не оба сразу.
Ставить выше остальных RewriteRule и перед проверкой не забыть сбросить кеш браузера.
Похожие вопросы