Редирект со старых динамических URL на новые статические

NeverMore

Новичок
Редирект со старых динамических URL на новые статические

Options +FollowSymlinks
RewriteEngine on

# index Rewrite #
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/(.*).html?$ index.php?page=$1&razdel=$2&producer=$3 [NC,L] # 3
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ index.php?page=$1&razdel=$2 [NC,L] # 2
RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?page=$1 [NC,L] # 1
RewriteRule ^/?$ index.php [NC,L] # index

# Redirect #
RewriteCond %{QUERY_STRING} ^page=([^\&]+)$
RewriteRule ^page=([^\&]+)&razdel=([^\&]+)&producer=([^\&]+)$ index.php?page=$1&razdel=$2&producer=$3 [R=301]

Страница index.php и .htaccess в котором содержатся указания находится в http://site/dir/dir/
Первая часть скрипта работает.
При запросе вида http://site/dir/dir/1/2/3.html передаются
$_GET['page'] = 1;
$_GET['razdel'] = 2;
$_GET['producer'] = 3;

Однако для поисковых систем необходим перманентный редирект со старых URL.
Попытался реализовать сам - либо рекурсивная переадресация, либо вообще не работает :(
 

nalim

Новичок
чтобы не было рекурсий можно при первом редиректе переписать не только URL но какой либо атрибут чтобы второй раз он проверялся rewritecond и редирект не повторялся
 

x-yuri

Новичок
ты какие URL в какие преобразовывать хочешь? а то в названии пишешь одно, а преобразовываешь статические в динамические

RewriteRule ^page=([^\&]+)&razdel=([^\&]+)&producer=([^\&]+)$ index.php?page=$1&razdel=$2&producer=$3 [R=301]
параметры автоматически не доступны, только путь к сценарию

почему нельзя просто добавить флаг R=301 к RewriteRule секции # index Rewrite #, вместо добавления # Redirect #?

а предпринимать меры против рекурсии тут не вижу причин, у тебя она просто не должна возникать
 

NeverMore

Новичок
x-yuri я хочу что бы все страницы были с ЧПУ вида
http://site/dir/dir/1/2/3.html
(преобразовав из http://site/dir/dir/index.php?page=1&razdel=2&producer=3)
Однако поисковые роботы, ссылки и закладки пользователей могут содержать старый вид без преобразований ЧПУ.
Именно для таких пользователей я хочу отправлять заголовки moved permanently на новый ЧПУ адрес.
 

x-yuri

Новичок
чтобы не было рекурсий можно при первом редиректе переписать не только URL но какой либо атрибут чтобы второй раз он проверялся rewritecond и редирект не повторялся
NeverMore ну значит тебе хороший совет дали
 
Сверху