Общие > Веб Сервера
.htaccess - ПОМОГИТЕ ПОЖАЛУСА особый редирект
ravshaniy:
перл здесь не причем, это как бы раз
а как два. задачу явно нужно разделить.
--- Цитировать ---hr1:
1. Проверка HTTP_HOST
2. Если адрес %1.site111.ru/%2 перейти на пункт 4
3. Заменить ссылку на %1.site111.ru/%2
4. Если %1=""(пустой) или %1="www" перейти пункт 6
5. Заменить ссылку на site111.ru/%1
6. конец :)
--- Конец цитаты ---
у вас есть группа сайтов с которых редирект на основной сайт и у вас есть основной сайт. соответственно две разные задачи.
первая задача:
1. Проверка HTTP_HOST
3. Заменить ссылку на %1.site111.ru/%2
правильнее будет выполнить редирект и оба пункта делаются одним правилом: причем вы его уже написали
и вторая задача на основном сайте:
4. Если %1=""(пустой) или %1="www" перейти пункт 6
5. Заменить ссылку на site111.ru/%1
что чуть сложнее но также выполнимо:
--- Код: ---
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\\.)?[^.]+\\.site111\\.ru$
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^(www\\.)?([^.]+)\\.site111\\.ru(.*) /$2/$3 [L]
--- Конец кода ---
возможно код ошибочный ну
исходный текст здесь читайте исправляйте
http://httpd.apache.org/docs/2.2/rewrite/rewrite_guide.html#uservhosts
hr1:
не получается
hr1:
После долгих экспериментов и изучения документации
Я ЭТО СДЕЛАЛ!!!
Итак готовый "скрипт"для .htaccess в студию!!!
--- Код: ---
[SIZE=3][COLOR=green]
RewriteEngine on
RewriteCond %{HTTP_HOST} !^site111.ru
RewriteRule ^(.*)$ - [C]
RewriteCond %{HTTP_HOST} ^(www\\.site111\\.ru)|^(www\\.zite111\\.ru)|^(zite111\\.ru)|^(www\\.site-111\\.ru)|^(site-111\\.ru)|^(www\\.s111\\.ru)|^(s111\\.ru)|^(www\\.site111\\.com)|^(site111\\.com)
RewriteRule ^(.*)$ http://site111.ru/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www\\.(.+)\\.site111\\.ru [OR]
RewriteCond %{HTTP_HOST} ^(.+)\\.site111\\.ru [OR]
RewriteCond %{HTTP_HOST} ^www\\.(.+)\\.zite111\\.ru [OR]
RewriteCond %{HTTP_HOST} ^(.+)\\.zite111\\.ru [OR]
RewriteCond %{HTTP_HOST} ^www\\.(.+)\\.site-111\\.ru [OR]
RewriteCond %{HTTP_HOST} ^(.+)\\.site-111\\.ru [OR]
RewriteCond %{HTTP_HOST} ^www\\.(.+)\\.s111\\.ru [OR]
RewriteCond %{HTTP_HOST} ^(.+)\\.s111\\.ru [OR]
RewriteCond %{HTTP_HOST} ^www\\.(.+)\\.s111\\.com [OR]
RewriteCond %{HTTP_HOST} ^(.+)\\.site111\\.com
RewriteRule ^(.*)$ http://site111.ru/%1/$1 [R=301,L]
[/COLOR][/SIZE]
--- Конец кода ---
Что происходит?
в первом условии
если url= http://site111.ru/... сразу выходим
во втором условии
если нет домена третьего уровня или там cтрока www
переписываем все на http://site111.ru/...
пример:
s111.ru ->site111.ru
www.zite111.ru/33 -> site111.ru/33
www.site111.ru -> site111.ru
в третьем условии
берем домен третьего уровня (игнорируя www перед ним)
и помещаем его в подкаталог сдвигая все остальные подкаталоги
пример:
go.site111.ru -> site111.ru/go
www.yes.zite111.ru -> site111.ru/yes
www.rock.s111.ru/user/de -> site111.ru/rock/user/de
Надеюсь кому то это еще пригодится :)
Навигация
Перейти к полной версии