перенаправление .htaccess только при наличии параметра GET

#apache #.htaccess #redirect #mod-rewrite #http-redirect

#apache #.htaccess #перенаправление #мод-перезапись #http-перенаправление

Вопрос:

В моем файле есть следующая строка .htaccess :

 Redirect 301 /folder1 https://www.example.com/folder2/file.php
  

Это перенаправит все с /folder1 на https://www.example.com/folder2/file.php .

Мне нужно условие, разрешающее это перенаправление только в том случае, если URL-адрес содержит mykey= параметр GET, иначе игнорируйте эту команду перенаправления.

Как я могу это сделать?

Ответ №1:

Вы не можете сделать это, используя Redirect директиву, которая выполняет базовое сопоставление URI.

Для этого вам нужно будет использовать mod_rewrite основанные правила следующим образом:

 RewriteEngine On

RewriteCond %{QUERY_STRING} (^|amp;)mykey= [NC]
RewriteRule ^folder1(/|$) /folder2/file.php [R=301,L,NC]
  

Перед тестированием обязательно очистите кеш.

Ссылки:

Ответ №2:

Я наконец нашел рабочее решение:

 RewriteCond %{REQUEST_URI} ^/folder1/
RewriteCond %{QUERY_STRING} mykey=
RewriteRule ^folder1/$ /folder2/file.php$1 [R=301,L]
  

Комментарии:

1. Ах, я только что отметил ваш собственный ответ. Здесь его нет $1 и RewriteCond %{REQUEST_URI} его можно удалить