Программирование > Perl
строка с условиями на perl
Yaroslav:
значит так, начнем, возможно кто то дополнит :-)
1. функция RewriteCond не позволяет использовать регулярные выражения, кроме как крышки. которая в свою очередь является (по правилам Перл) начала строчки, поэтому:
RewriteCond %{HTTP_HOST} site-111.ru [OR]
RewriteCond %{HTTP_HOST} s111.ru [OR]
RewriteCond %{HTTP_HOST} zite111.ru [OR]
RewriteCond %{HTTP_HOST} site111.com
RewriteRule ^(.*)$ http://www.site111.ru/$1 [R=301]
Таким образом с адреса http://www.anton.site111.ru, самого Антона вытащить не удается...
Зато все остальное удачно подставляется в конце :))
Yaroslav:
--- Цитировать ---Yaroslav:
функция RewriteCond не позволяет использовать регулярные выражения
--- Конец цитаты ---
забираю свои слова обратно! вроде что то нарыл
Yaroslav:
Тут была полная бредятена, вместо нее
--- Код: ---RewriteCond %{HTTP_HOST} ^www\\.(.*)\\..*111.ru\\/(.*) [OR]
RewriteCond %{HTTP_HOST} ^[url]www..*111.ru\\/[/url](.*) [OR]
RewriteCond %{HTTP_HOST} ^www\\.(.*)\\..*111.com\\/(.*) [OR]
RewriteCond %{HTTP_HOST} ^[url]www..*111.com\\/[/url](.*)
RewriteRule ^(.*)$ [url]http://www.site111.ru/[/url]$1/$2 [R=301]
--- Конец кода ---
интересно заработает ли :-))
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
Надеюсь кому то это еще пригодится :)
Навигация
Перейти к полной версии