Прошу помощи по RewriteEngine

[Удален]
576

статью /ru/forum/190768 изучил.. никак не получилось.

Сам вопрос в следующем:

Есть сайт, www.aaa.ru и на него со временем накопилось много ссылок с различных форумов и т.п.

Но сайт уже устарел.

Есть новый сайт www.bbb.ru и на нем все красиво и интересно, но мало трафика.

Что собственно хочется - добавить старый сайт как старую версию нового (www.bbb.ru/old_site/), конечно же при этом сохранив работоспособность ссылок.

Что пытался:

Прописать на старом сайте в .htaccess переадресацию ссылок. Таким образом чтобы добавлялся подкаталог old-version. Но к сожалению никак не могу разобраться с синтаксисом =(

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www.aaa.ru/(*.)$ [NC]

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

и главная страница переходит(в chrome, в ie вообще перестает читать htaccess) по правилу.. но стоит добавить что то после aaa.ru/ и переадресации не происходит( хотя указал (*.)$

Хотелось бы чтобы с помощью RewriteEngine ссылки вида:

http://www.aaa.ru/page/one.html

http://www.aaa.ru/page2/innerpage/two.html

переделывались в

http://www.bbb.ru/old-version/page/one.html

http://www.bbb.ru/old-version/page2/innerpage/two.html

и чтобы работало для любых строк после www.aaa.ru

При этом старый сайт нормально открывается на новом домене, но любые попытки перейти по пунктам меню - выкидывают на 404-ую нового сайта.. потом что сайт старый полностью на html и всем ссылкам не абсолютным тоже нужно как то объяснить что нужно добавить /old-version перед ссылкой.. Возможно ли такое тоже сделать при помощи RewriteEngine? По сути то же добавление в путь одной папки, но где разместить htaccess? Что я имею ввиду:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^aaa.ru/ [NC]

RewriteRule ^(.*)$ http://aaa.ru/old-version/$1 [L,R=301]

не понимаю как сделать добавку ко всем относительным ссылкам только для файлов в папке /old-version

подскажите плз.

Прошу подсказать как быть, заранее благодарен!

И еще, 1 человек подсказал что на drupal-e есть какой то модуль который это выполняет.. искал-искал ничего похожего не нашел.. может кто сталкивался?

Алеандр
На сайте с 08.12.2010
Offline
207
#1

По-моему усложняете, попробуйте на старом домене в .htaccess, в корневой папке в начале файла указать:

RewriteEngine on
RewriteRule ^/(.*)$ http://newsite.ru/old-version/$1 [L,R=301]

Правило должно отправлять с любым запросом в newsite.ru/old-version.

Локальные ссылки в старом html проще подменить обычной заменой в файлах.

--------------------------

Вообще, в вашем случае куда как более логично и менее геморно было бы старый сайт разместить на поддомене, oldversion.newsite.ru, сделав обычный 301 редирект со старого имени. Это нынче легко доступно на любом хостинге.

То есть структура у вас стала бы такой:

oldsite.ru -> 301 -> oldversion.newsite.ru

Выгода - куда более гармоничное восприятие старого-нового сайта, никаких проблем с путями, они остались бы теми же, кроме того, из всех изменений - глобальная замена домена, и то не факт, что у вас абсолютные пути на старом сайте. Если относительные - вообще кроме создания поддомена и одного единственного редиректа делать ничего не надо будет.

[Удален]
#2
Алеандр:
По-моему усложняете, попробуйте на старом домене в .htaccess, в корневой папке в начале файла указать:

RewriteEngine on

RewriteRule ^/(.*)$ http://newsite.ru/old-version/$1 [L,R=301]


Правило должно отправлять с любым запросом в newsite.ru/old-version.
Локальные ссылки в старом html проще подменить обычной заменой в файлах.

--------------------------

Вообще, в вашем случае куда как более логично и менее геморно было бы старый сайт разместить на поддомене, oldversion.newsite.ru, сделав обычный 301 редирект со старого имени. Это нынче легко доступно на любом хостинге.

То есть структура у вас стала бы такой:
oldsite.ru -> 301 -> oldversion.newsite.ru

Выгода - куда более гармоничное восприятие старого-нового сайта, никаких проблем с путями, они остались бы теми же, кроме того, из всех изменений - глобальная замена домена, и то не факт, что у вас абсолютные пути на старом сайте. Если относительные - вообще кроме создания поддомена и одного единственного редиректа делать ничего не надо будет.

А как в случае поддомена сохранить все ссылки работоспособными которые сейчас идут на старый сайт? из за этого то все задумывалось..

IL
На сайте с 20.04.2007
Offline
435
#3
zopaz:
А как в случае поддомена сохранить все ссылки работоспособными которые сейчас идут на старый сайт? из за этого то все задумывалось..

Так же, как планировалось поступить без поддомена - сделать редирект для старого сайта на новый. (КО)

RewriteRule (.*) http://subdomain.site.com%{REQUEST_URI} [R=301,L]

Или есть сложности какие?

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
[Удален]
#4
ivan-lev:
Так же, как планировалось поступить без поддомена - сделать редирект для старого сайта на новый. (КО)
RewriteRule (.*) http://subdomain.site.com%{REQUEST_URI} [R=301,L]


Или есть сложности какие?

Но для всего этого сайт должен существовать? или хватит просто домена на котором лежит .htaccess ?

даже не так...

[Удален]
#5
Алеандр:
По-моему усложняете, попробуйте на старом домене в .htaccess, в корневой папке в начале файла указать:

RewriteEngine on

RewriteRule ^/(.*)$ http://newsite.ru/old-version/$1 [L,R=301]


Правило должно отправлять с любым запросом в newsite.ru/old-version.
Локальные ссылки в старом html проще подменить обычной заменой в файлах.

--------------------------

Вообще, в вашем случае куда как более логично и менее геморно было бы старый сайт разместить на поддомене, oldversion.newsite.ru, сделав обычный 301 редирект со старого имени. Это нынче легко доступно на любом хостинге.

То есть структура у вас стала бы такой:
oldsite.ru -> 301 -> oldversion.newsite.ru

Выгода - куда более гармоничное восприятие старого-нового сайта, никаких проблем с путями, они остались бы теми же, кроме того, из всех изменений - глобальная замена домена, и то не факт, что у вас абсолютные пути на старом сайте. Если относительные - вообще кроме создания поддомена и одного единственного редиректа делать ничего не надо будет.

Столкнулся с небольшой проблемой, подскажите а как быть если домен осталься старыйб неизменный? Точнее так:

был сайт www.site.ru теперь он располагается на old.site.ru а на site.ru лежит новый сайт. Как сделать редирект не помешав работе нового сайта? ведь все ссылки относительные на новом сайте так же по этому редиректу уведут на old.site.ru

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

Написать редирект по шаблону (regexp) для старых ссылок. Если это невозможно без затрагивания шаблона нового сайта - то никак. По моему об этом надо было думать первом делом, как вы собираетесь редиректить старый сайт не затрагивая работу нового сайта.

[Удален]
#7
siv1987:
Написать редирект по шаблону (regexp) для старых ссылок.

Если не затруднит, можно подробнее про это?

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

Не затруднит

http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule

Apache:

Syntax: RewriteRule Pattern Substitution [flags]

Pattern is a perl compatible regular expression.
[Удален]
#9

Спасибо за помощь!

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