Общие > Веб Сервера

.htaccess - ПОМОГИТЕ ПОЖАЛУСА особый редирект

<< < (2/2)

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

Надеюсь кому то это еще пригодится :)

Навигация

[0] Главная страница сообщений

[*] Предыдущая страница

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии