Назад | Перейти на главную страницу

.htaccess 301 редирект не работает

У меня есть веб-сайт, использующий систему CMS на основе PHP.

Таким образом, каждая страница создается динамически, например:

http://www.shuling.net.cn/index.php?_m=mod_product&_a=view&p_id=87

Теперь я хочу перенаправить эту конкретную страницу на другую страницу, то есть:

Поэтому я пишу файл .htaccess следующим образом:

redirect 301 /index.php?_m=mod_product&_a=view&p_id=87 https://www.datanumen.com/sql-recovery/

Но после того, как я загружаю .htaccess в корневой каталог веб-сайта, это вообще не работает.

Я повторю тест, написав другое правило, например:

redirect 301 /sql/ https://www.datanumen.com/sql-recovery/

Тогда это правило будет работать отлично.

Зачем?

Спасибо

Строка запроса не является частью соответствия в директиве Redirect, чтобы перенаправить строки запроса, вам необходимо использовать мод-перезапись следующим образом:

Опция 1

RewriteEngine on

RewriteCond %{THE_REQUEST} /index\.php\?_m=mod_product&_a=view&p_id=87 [NC]
RewriteRule ^ https://www.datanumen.com/sql-recovery/? [NC,L,R]

вариант 2

RewriteEngine on

RewriteCond %{QUERY_STRING} ^_m=mod_product&_a=view&p_id=87$ [NC]
RewriteRule ^index\.php$ https://www.datanumen.com/sql-recovery/? [NC,L,R]

Используем пустой вопросительный знак ? в конце целевого URL-адреса, чтобы отказаться от старых строк запроса, в противном случае эти строки запроса добавляются к целевому URL-адресу по умолчанию.

Изменить р к R = 301 если вы хотите сделать перенаправление постоянным.

[Проверено на apache2 и 2.4]