301 редирект в htaccess

12 3
Lion_astana
На сайте с 22.12.2012
Offline
53
1923

Добрый день. Совсем запутался с mod_rewrite:

Имеются динамические УРЛы: site.ru/page.php?id=12(или любое другое число), сделал так в htaccess:

RewriteRule ^([^/]*)/$ /page.php?id=$1 [L]

теперь адрес страницы выглядит так: site.ru/12/

Все устраивает. НО!

Старая страница то была проиндексирована, а дубли нам не нужны. Как сделать 301 редирект со старой страницы на новую. Здесь в чем нюанс: как сделать с одной конкретной страницы на другую я знаю. А можно ли написать правило для всех подобных страниц? Т.е. чтобы вне зависимости от значения переменной ID в адресе site.ru/page.php?id= (какой-то ID) срабатывал редирект 301 на страницу site.ru/этот же ID/?

Очень буду благодарен за идеи!

[umka]
На сайте с 25.05.2008
Offline
456
#1

RewriteCond %{QUERY_STRING} ^id=[\d+]$

RewriteRule ^page\.php$ /%1/ [R=301,L]

Только нужно в правильное место в .htaccess это воткнуть.

Лог в помощь!
S
На сайте с 06.01.2013
Offline
1
#2

RewriteRule ^([^/]*)/$ /page.php?id=$1 [L] заменить на

RewriteRule ^([^/]*)/$ /page.php?id=$1 [R=301,L]

регистратор доменных имен (http://www.started.ru/) www.started.ru (www.started.ru) для реселлеров - www.started.biz (www.started.biz)
Lion_astana
На сайте с 22.12.2012
Offline
53
#3

started, RewriteRule ^([^/]*)/$ /page.php?id=$1 [R=301,L] не работает, редиректит на page.php?id=ID

---------- Добавлено 07.01.2013 в 16:18 ----------

[umka], что-то не так, редиректит на http://www.site.ru//?id=3 (3 - это для примера).

C
На сайте с 04.02.2005
Offline
277
#4

Показывайте полный htaccess

Lion_astana
На сайте с 22.12.2012
Offline
53
#5

Chukcha,

Options +FollowSymLinks

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP_HOST} ^site\.ru$ [NC]

RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/

RewriteRule ^index\.html$ http://www.site.ru/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^([^/]*)/$ /article.php?id=$1 [L]

RewriteCond %{QUERY_STRING} ^id=[\d+]$

RewriteRule ^article\.php$ /%1/ [R=301,L]

C
На сайте с 04.02.2005
Offline
277
#6
Только нужно в правильное место в .htaccess это воткнуть.

Выше,выше...

siv1987
На сайте с 02.04.2009
Offline
427
#7

RewriteCond %{QUERY_STRING} ^id=(\d+)$

RewriteCond %{ENV:REDIRECT_STATUS} ^$

RewriteRule ^page\.php$ /%1/ [R=301,L]

добавить перед!

RewriteRule ^([^/]*)/$ /page.php?id=$1 [L]

Lion_astana
На сайте с 22.12.2012
Offline
53
#8

siv1987, не работает...

siv1987
На сайте с 02.04.2009
Offline
427
#9

RewriteCond %{ENV:REDIRECT_STATUS} ^$

RewriteCond %{QUERY_STRING} ^id=(\d+)$

RewriteRule ^page\.php$ /%1/? [R=301,L]

Lion_astana
На сайте с 22.12.2012
Offline
53
#10

siv1987, РАБОТАЕТ! Проверил ответы сервера, все ок, 301 со старой на новую. На новой 200. Как положено!

Если можно, то вопросы как к знающему человеку:

1) Если у меня на сайте в нескольких скриптах используется GET переменная ID, то теперь я так понимаю со всех скриптов где в старом адресе будет переменная именно "ID" перекидывать по созданному редиректу? Не знаю правильно ли объяснил, но если не поймете, напишите пожалуйста, попробую объяснить.

2) Адрес вида site.ru/id/ работает, а site.ru/id - ошибка 404. Как считаете, влияет ли на SEO наличие слэша в конце адреса и как-то можно в регулярке прописать чтобы слэш в конкретном примере добавлялся (или наоборот убирался если он не нужен)?

Очень-очень благодарю.

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий