Как сделать редирект в конфиге Apache или htaccess используя правило от nginx?

Есть страницы с такими старыми URL`ами.

site.com/customer/index.php?product=12

Так как имя клиента(customer) динамическое и на новом проекте такой папки нет, хочу передать это имя как параметер вместе с остальными данными, чтобы на запрос апачь проверил если папка не существует, то переделать запрос и указать эту папку в качестве аргумента oldUrl:

site.com/?oldUrl=customer&product=12

В nginx конфиге есть вот такое правило:

try_files  $uri $uri/ /index.php?oldUrl=$uri&$args;

Как перенаправить 301 редиректом страницы в apache? Спасибо.

Обновление: Вот мой root .htaccess файл:

    Options -Indexes
Options FollowSymlinks
RewriteEngine on

RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1 [L,R=301]

RewriteCond %{REQUEST_URI} ^/manager/$
RewriteRule ^(manager)/$ /$1 [R=301,L]
RewriteCond %{REQUEST_URI} ^/manager
RewriteRule ^manager(/.+)?$ /backend/web/$1 [L,PT]

RewriteCond %{REQUEST_URI} !^/frontend/
RewriteCond %{REQUEST_URI}%{QUERY_STRING} ^/([a-z0-9]+)/index\.php?(.*)$
RewriteRule ^.+ /index.php?oldUrl=%1&%2 [R=301,NC]

RewriteCond %{QUERY_STRING} !^oldUrl
RewriteCond %{REQUEST_URI} ^.*$
RewriteRule ^(.*)$ /frontend/web/$1

Обновление.

После применения правил предложенных @uberchel УРЛ формируется правильно. http://site.local/index.php?oldUrl=tonytest&product=2&category=23&f=3&n=3&m=2

Только апачь стал ругаться

Object not found!
The requested URL was not found on this server. If you entered the URL manually please check your spelling and try again.

Привожу htaccess из frontend/web/ директории:

RewriteEngine on

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php

Что может мешать отрендерить файл?


Ответы (2 шт):

Автор решения: uberchel
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/customer/
RewriteCond %{QUERY_STRING} ^product=(.+)$
RewriteRule ^(.*) http://site.com/?oldUrl=customer&product=%1 [R=302,NC]

Если параметр product встречается только для customer, то первое правило можно убрать:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^product=(.+)$
RewriteRule ^(.*) http://site.com/?oldUrl=customer&product=%1 [R=302,NC]
→ Ссылка
Автор решения: uberchel

Я думаю это решение вам нужно ? У вас ошибка была, так как вы после всем манипуляций, опять шло перенапровление последним правилом, поэтому для корректной работы пришлось навешать больше условий.

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1 [L,R=301]
RewriteCond %{REQUEST_URI} ^/manager/$
RewriteRule ^(manager)/$ /$1 [R=301,L]
RewriteCond %{REQUEST_URI} ^/manager
RewriteRule ^manager(/.+)?$ /backend/web/$1 [L,PT]

RewriteCond %{REQUEST_URI} !^/frontend/
RewriteCond %{REQUEST_URI}%{QUERY_STRING} ^/([a-z0-9]+)/index\.php?(.+)?
RewriteRule ^.+ /?oldUrl=%1&%2 [R=302,NC]

RewriteCond %{QUERY_STRING} !^oldUrl
RewriteCond %{REQUEST_URI} ^.*$
RewriteRule ^(.*)$ /frontend/web/$1
→ Ссылка