Простое перенаправление 301 не работает в этом случае - например:
Redirect 301 /oldpage http://www.mysite.co.uk/newsubdir/newpage
Сайт является динамическим, и .htaccess уже переименовывает страницы в URL-адреса, удобные для поисковых систем, из URL-адресов, содержащих строку запроса.
RewriteRule ^(.*)/(.*)$ index.php?page_name=$1&sub=$2 [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)([^/])$ http://www.mysite.co.uk/$1$2/ [R=301,L]
Когда мы используем эти 301 перенаправления, как указано выше, в том же .htaccess (внизу), страницы перенаправляются, но строка запроса добавляется в конец URL разочаровывающе, и мы не выяснили, почему и как чтобы предотвратить это.
После перенаправления 301 URL выглядит следующим образом: -
http://www.mysite.co.uk/newsubdir/newpage/?page_name=old-page&sub=
... Вызывает ошибку 404 - это просто строка запроса, добавленная в конце URL, которая нарушает перенаправление.
Пожалуйста, кто-нибудь может посоветовать, что нужно сделать, чтобы это исправить?
Спасибо