У меня есть веб-сайт, использующий систему 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]