#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}
его можно удалить