редирект всех страниц, кроме главной

J
На сайте с 15.09.2008
Offline
17
2489

Возникла потребность переноса сайта на поддомен, но так, чтобы главная страница основного сайта осталась. Пользуюсь 301 редиректом: все URL с основного на поддомен перенаправляются нормально, но правила исключения для .htaccess не срабатывают:

RewriteEngine On

RewriteCond %{REQUEST_URI} !^/$

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

Как можно отредиректить все страницы, кроме главной?

Аналитика, маркетинг, оптимизация (http://www.mokoron.com) непыльное продвижение (http://seopult.ru/ref.php?ref=1d37a62cf60667cf)
Сергей
На сайте с 01.10.2010
Offline
144
#1

Update. Подскажите, пожалуйста, возникла такая же потребность сегодня - перенаправить все УРЛы на другой домен, кроме главной страницы. Какие директивы прописать в htaccess?

Условно: 
site.ru/post12 -> newsite.ru/post12
site.ru/post242 -> newsite.ru/post242

Кроме:
site.ru ->  newsite.ru

Гуглил много, есть вариации, но такого не нашел. Прописывать каждый пост руками тоже не вариант, много страниц. 

Спасибо заранее кто отзовется.

Вы знаете, я и сам немного... вебмастер
damn-doubleclick
На сайте с 10.09.2021
Offline
39
#2
ИноПост #:

Update. Подскажите, пожалуйста, возникла такая же потребность сегодня - перенаправить все УРЛы на другой домен, кроме главной страницы. Какие директивы прописать в htaccess?

Условно: 
site.ru/post12 -> newsite.ru/post12
site.ru/post242 -> newsite.ru/post242

Кроме:
site.ru ->  newsite.ru

Гуглил много, есть вариации, но такого не нашел. Прописывать каждый пост руками тоже не вариант, много страниц. 

Спасибо заранее кто отзовется.

Для перенаправления всех УРЛов, кроме главной страницы, с одного домена на другой в файле .htaccess, вы можете использовать следующие директивы RewriteRule:

RewriteEngine On RewriteCond %{HTTP_HOST} ^site\.ru$ [NC] RewriteCond %{REQUEST_URI} !^/$ RewriteRule ^(.*)$ http://newsite.ru/$1 [L,R=301]

Этот код выполняет следующие действия:

  1. Включает модуль RewriteEngine.

  2. Проверяет, что текущий HTTP_HOST (домен) соответствует "site.ru" (не учитывая регистр символов).

  3. Проверяет, что REQUEST_URI (часть УРЛа после домена) не является главной страницей (не равна "/").

  4. Если оба условия выполняются, то происходит перенаправление на тот же УРЛ на новом домене с кодом ответа 301 (постоянное перенаправление).

Таким образом, все УРЛы, кроме главной страницы, будут перенаправлены с "site.ru" на "newsite.ru".

Лучший хостер с адекватными сис. админами: https://clck.ru/35zGfN
E
На сайте с 01.10.2017
Offline
94
#3

Так можно и только правило использовать (RewriteRule без RewriteCond) с ".+". Но все это не охватывает строку запроса (query string), например /?p=2 😉

jector :
Возникла потребность переноса сайта на поддомен, но так, чтобы главная страница основного сайта осталась.

https://p20.ru/features/redirect

Домены на продажу: https://p20.ru/collection/domains-for-sale
D.iK.iJ
На сайте с 26.05.2013
Offline
225
#4
Оставляем главную, а с 404 уже редирект куда нужно ))
Адаптивный дизайн в 2 строчки ( https://dikij.com/wm/adaptaciya-saytov.php ). + Принимаю заказы любой сложности ( https://searchengines.guru/ru/forum/926323 ). 💎 Еще я делаю классные кулоны с опалами ( https://mosaicopal.ru/ ).
Сергей
На сайте с 01.10.2010
Offline
144
#5
damn-doubleclick #:

Для перенаправления всех УРЛов, кроме главной страницы, с одного домена на другой в файле .htaccess, вы можете использовать следующие директивы RewriteRule

Спасибо! Можно еще вопрос - если нужно и главную перенаправить, но на другой домен, то как правильнее сделать? 

Т.е.:

site.ru/post12 -> new1site.ru/post12
site.ru/post242 -> new1site.ru/post242

Кроме:
site.ru ->  new2site.ru

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