Назад | Перейти на главную страницу

9000+ различных поддоменов от 301 до основного домена, .htaccess apache

Я купил домен с различными поддоменами, такими как

Kim.domain.com/whatever
john.domain.com/whatever1
Lizo.domain.com/whatever2
Simon.domain.com/whatever1

И это было в тысячах, и также были ссылки на эти страницы

Я хотел бы сделать 301 редирект для всех этих URL в http://domain.com

Есть идеи, как это можно сделать?

Это для веб-сервера apache и должно быть выполнено через .htaccess.

Я реализовал решение, прочитав ответ ниже.

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www. domain.com$
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*)$ http:/ / www. domain.com/$1 [L,R=301]

Однако у меня небольшая проблема, я хотел бы перенаправить все поддомены + подпапки на http: // www. domain.com/

За исключением http: // domain. com / subfolder /, и в этом случае я хотел бы перенаправить на http: // www.domain. com / subfolder / [т.е. исключение для субдомена]

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

Примечание. В приведенных выше примерах URL-адресов были добавлены пробелы, чтобы предотвратить блокировку спама для блокировки сообщения.

Что-то вроде:

RewriteEngine On

RewriteBase /

RewriteCond% {HTTP_HOST}! ^ Domain.com $ [NC]

RewriteRule ^ (. *) $ http://domain.com/ [L, R = 301]

В основном это говорит о том, что если HTTP_HOST не соответствует domain.com, выполните перенаправление 301 на http://domain.com. Будьте осторожны, чтобы избежать любых . в RewriteCond.

Если вы хотите сохранить папку после имени хоста, чтобы http://kim.domain.com/whatever перенаправляет на http://domain.com/whatever, вы можете заменить последнюю строку на:

RewriteRule ^ (. *) $ http://domain.com/1 доллар США [L, R = 301]

Вы намерены потерять часть «kim» и сохранить часть «все», чтобы kim.domain.com/whatever перенаправлялся на domain.com/whatever? Если это так, добавьте это в файл .htaccess каждого сайта:

RewriteEngine On
RewriteRule ^/(.*)$ http://domain.com/$1 [L,R=301]

Я предполагаю, что вам нужно это в .htaccess, потому что вы хотите избавиться от kim, john, lizo и simon, но оставьте larry, moe и curly. Если вы это сделаете, я предлагаю создать один файл htaccess в одном каталоге и установить этот каталог в качестве DocumentRoot для всех виртуальных хостов, от которых вы хотите «избавиться».

Если вы хотите избавиться от все но "domain.com", вы можете повысить производительность, полностью избавившись от всех виртуальных хостов, имея только один сайт и выполняя настройку apache (см. "Канонические имена хостов")

RewriteEngine On
RewriteCond %{HTTP_HOST} !^domain.com$
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*)$ http://domain.com/$1 [L,R=301]

Если запрошенный хост не является «domain.com» и он не пустой (http 1.0 и сломанные клиенты, которые не отправляют заголовок Host:), тогда он перенаправляет пользователя на domain.com. Это избавляет сервер от необходимости выяснять, какой виртуальный хост хочет клиент, а затем искать и читать файл htaccess.

Если вам не нужна «какая-то» часть, RewriteRule станет

RewriteRule . http://domain.com/ [L,R=301]