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

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

Каждая страница генерируется динамически, например:

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/

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

Почему?

Спасибо

1
задан 30 April 2016 в 21:47
1 ответ

Строка запроса не является частью соответствия в директиве 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 на R = 301 , если вы хотите сделать перенаправление постоянным.

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

1
ответ дан 3 December 2019 в 23:47

Теги

Похожие вопросы