Перенаправить динамические URL-адреса, включая запрос с htaccess

Мне нужно перенаправить некоторые URL-адреса из старой версии веб-сайта на новые URL-адреса. Я не нашел проблемы с простыми URL-адресами, но я не могу заставить URL-адреса с querystrings работать:

Redirect 301 /product_detail.php?id=1 http://www.mysite.com/product/permalink 

Он просто возвращает 404, а не найден.

Я также пробовал с маршрутом на Silex (микроструктура PHP, которую я использую), но это тоже не сработало:

 $app->get('/product_detail.php?id={id}', function($id) use ($app) { $prodotto = Product::getPermalink($id); return $app->redirect($app['url_generator']->generate('product',array('permalink'=>$prodotto))); }); 

Есть ли способ с некоторым правилом htaccess, чтобы строка запроса считалась частью URL-адреса и позволяла ей перенаправляться должным образом?

Спасибо.

Перенаправление 301 /product_detail.php?id=1 http://www.mysite.com/product/permalink

Redirect – это директива mod_alias, не соответствующая манипулированию строками запроса:

mod_alias предназначен для обработки простых задач манипулирования URL-адресами. Для более сложных задач, таких как манипулирование строкой запроса, используйте инструменты, предоставляемые mod_rewrite.

Извлечен из документов Apache mod_alias

Итак, mod_rewrite следует использовать. Тот же пример в одном файле .htaccess в корневом каталоге будет примерно таким:

 Options +FollowSymlinks -MultiViews RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} ^/product_detail\.php [NC] RewriteCond %{REQUEST_URI} !/product/permalink [NC] RewriteRule .* /product/permalink [R=301,NC,L] 

Он перенаправляет

http://www.mysite.com/product_detail.php?id=1

Для того, чтобы:

http://www.mysite.com/product/permalink?id=1

Запрос был автоматически добавлен к URL-адресу подстановки.

Для внутреннего отображения замените [R = 301, NC, L] на [NC, L]