Редирект с поддомена кроме категории

Ragnarok
На сайте с 25.06.2010
Offline
226
787

Задача:

сделать редирект средствами .htaccess со всех страниц:

http://sub.domain.com/* => http://domain.com/*

КРОМЕ категории и всего что вложено

http://sub.domain.com/catalog/kuhni/*

которое должно остаться на том же поддомене.

пробую так:


RewriteCond %{HTTP_HOST} ^sub\.domain\.com$ [NC]
RewriteCond %{REQUEST_URI} !^catalog/kuhni
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]

но не получается. что я делаю не так?

//TODO: перестать откладывать на потом
R
На сайте с 20.02.2015
Offline
59
#1


RewriteCond %{HTTP_HOST} ^sub\.domain\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/catalog/kuhni
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]

%{REQUEST_URI} начинается с "/"

Ragnarok
На сайте с 25.06.2010
Offline
226
#2
rereg:

RewriteCond %{HTTP_HOST} ^sub\.domain\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/catalog/kuhni
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]

%{REQUEST_URI} начинается с "/"

не помогло.. кидает на битриксовский domain.com/bitrix/urlrewrite.php

R
На сайте с 20.02.2015
Offline
59
#3

Ragnarok, только проверил - работает.

Может сразу вставить правило после RewriteEngine on если есть другие правила.

Или почистить кеш браузера, он редиректы тоже держит в кеше.

Ragnarok
На сайте с 25.06.2010
Offline
226
#4

rereg, кэш отключён, дополнительно проверяю CURLом через терминал.

редирект для не-категории срабатывает:

http://sub.domain.com/payment/ => http://domain.com/payment/ 

для категории кидает на rewrite:

http://sub.domain.com/catalog/kuhni/iz-akrila/ => http://domain.com/bitrix/urlrewrite.php

код вставлен в .htaccess сразу после

Options -Indexes 
ErrorDocument 404 /404.php

RewriteCond %{HTTP_HOST} ^sub\.domain\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/catalog/kuhni
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]

после него идёт только битриксовский

R
На сайте с 20.02.2015
Offline
59
#5

Ragnarok, как и писал у меня все сработало.


http://sub.domain.com/payment/ => http://domain.com/payment/
http://sub.domain.com/catalog/kuhni/iz-akrila/ => нет редиректа

Может не хтассесс дело? может сам движок(битрикс) перекидывает?

Попробуйте создать виртуал-хост в апаче "sub.domain.com"

и закиньте в него хтассесс


RewriteEngine on
RewriteCond %{HTTP_HOST} ^sub\.domain\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/catalog/kuhni
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]

И сами убедитесь, что работает.

Ragnarok
На сайте с 25.06.2010
Offline
226
#6

rereg, оно работает.. может, там что-то ещё нужно, чтобы не срабатывало то что идёт дальше?


<IfModule mod_php5.c>
php_flag session.use_trans_sid off
#php_value display_errors 1
#php_value mbstring.internal_encoding UTF-8
</IfModule>

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
</IfModule>


---------- Добавлено 04.08.2015 в 15:16 ----------

победил таким способом:

    RewriteCond %{HTTP_HOST} ^sub\.domain\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/catalog/kuhni [NC]
RewriteCond %{REQUEST_URI} !/bitrix/urlrewrite.php$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]

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