The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"субдомен + не пустой request_uri=перенаправить на основной дом"
Вариант для распечатки  
Пред. тема | След. тема 
Форум WEB технологии (Редирект)
Изначальное сообщение [ Отслеживать ]

"субдомен + не пустой request_uri=перенаправить на основной дом"  +/
Сообщение от sergey (??) on 05-Мрт-12, 21:38 
Доброе время суток!

Стоит задача- если HTTP_HOST с поддоменом и не пустой REQUEST_URI то сделать редирект на домен, если REQUEST_URI пуст (/) то оставлять как есть

Делаю так:

RewriteCond %{HTTP_HOST} ^([^\.]+)\.site\.ru$ [NC]
RewriteCond %{REQUEST_URI} !^/(.)+
RewriteRule ^(.*)$ http://site.ru [L,QSA]

Получаю в итоге редирект и с http://sub.site.ru и с http://sub.site.ru/query

Что делаю не так, ткните плиз ?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "субдомен + не пустой request_uri=перенаправить на основной дом"  +/
Сообщение от PavelR (ok) on 06-Мрт-12, 01:46 
> Делаю так:
> RewriteCond %{HTTP_HOST} ^([^\.]+)\.site\.ru$ [NC]
> RewriteCond %{REQUEST_URI} !^/(.)+
> RewriteRule ^(.*)$ http://site.ru [L,QSA]

Что-то не особо ясно понимаю что тут не так, но:

1)  RewriteCond %{REQUEST_URI} !^/(.)+  я бы исправил в более, на мой взгляд корректное

RewriteCond %{REQUEST_URI} !^/(.+)

2) Вообще неравенство можно проверить так:

RewriteCond %{REQUEST_URI} !^\/$                     # не равен /

3) Или так, что эффективнее:

RewriteCond %{REQUEST_URI} != "/"

4) http://stackoverflow.com/questions/5684940/problem-detecting...

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "субдомен + не пустой request_uri=перенаправить на основной дом"  +/
Сообщение от sergey (??) on 06-Мрт-12, 03:12 
>[оверквотинг удален]
> 1)  RewriteCond %{REQUEST_URI} !^/(.)+  я бы исправил в более, на
> мой взгляд корректное
> RewriteCond %{REQUEST_URI} !^/(.+)
> 2) Вообще неравенство можно проверить так:
> RewriteCond %{REQUEST_URI} !^\/$          
>            
> # не равен /
> 3) Или так, что эффективнее:
> RewriteCond %{REQUEST_URI} != "/"
> 4) http://stackoverflow.com/questions/5684940/problem-detecting...

Спасибо за совет! Но все равно не пашет, пропускает условие и все тут- редиректит на основной домен ((

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "субдомен + не пустой request_uri=перенаправить на основной дом"  +/
Сообщение от PavelR (ok) on 06-Мрт-12, 11:02 
>[оверквотинг удален]
>> RewriteCond %{REQUEST_URI} !^/(.+)
>> 2) Вообще неравенство можно проверить так:
>> RewriteCond %{REQUEST_URI} !^\/$
>>
>> # не равен /
>> 3) Или так, что эффективнее:
>> RewriteCond %{REQUEST_URI} != "/"
>> 4) http://stackoverflow.com/questions/5684940/problem-detecting...
> Спасибо за совет! Но все равно не пашет, пропускает условие и все
> тут- редиректит на основной домен ((

ну значит берем апач, возможно что и игрушечный, и начинаем крутить его в сторону:

RewriteLog "logs/rewrite.log"
RewriteLogLevel 3

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "субдомен + не пустой request_uri=перенаправить на основной дом"  +/
Сообщение от sergey (??) on 06-Мрт-12, 23:50 
Еще раз спасибо за подсказку, вот что удалось выяснить опытным путем- при присутствие знака  отрицания (!), выражение всегда считается истинным.

Т.е. если я делаю так:

RewriteCond %{REQUEST_URI} !^\/$
или
RewriteCond %{REQUEST_URI} !^\/foo$

Перенаправление идет в любом случае, в случае site.ru/ и site.ru/foo и в случае  site.ru/bar

Но если я использую условие вида:

RewriteCond %{REQUEST_URI} ^\/foo$

То срабатывает только site.ru/foo, site.ru/bar и site.ru/ не срабатывает.

Что не так ?

>[оверквотинг удален]
>>> # не равен /
>>> 3) Или так, что эффективнее:
>>> RewriteCond %{REQUEST_URI} != "/"
>>> 4) http://stackoverflow.com/questions/5684940/problem-detecting...
>> Спасибо за совет! Но все равно не пашет, пропускает условие и все
>> тут- редиректит на основной домен ((
> ну значит берем апач, возможно что и игрушечный, и начинаем крутить его
> в сторону:
> RewriteLog "logs/rewrite.log"
> RewriteLogLevel 3

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "субдомен + не пустой request_uri=перенаправить на основной дом"  +/
Сообщение от Andrey Mitrofanov on 07-Мрт-12, 09:36 
> Но если я использую условие вида:
> RewriteCond %{REQUEST_URI} ^\/foo$
> То срабатывает только site.ru/foo, site.ru/bar и site.ru/ не срабатывает.
> Что не так ?

Основной драматизм сюжета состоит в том, что ты не можешь написать то, что хочешь, а то, что можешь написать, это не то, что хочешь. Оно? А призы будут?

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "субдомен + не пустой request_uri=перенаправить на основной дом"  +/
Сообщение от sergey (??) on 07-Мрт-12, 09:39 
>> Но если я использую условие вида:
>> RewriteCond %{REQUEST_URI} ^\/foo$
>> То срабатывает только site.ru/foo, site.ru/bar и site.ru/ не срабатывает.
>> Что не так ?
> Основной драматизм сюжета состоит в том, что ты не можешь написать то,
> что хочешь, а то, что можешь написать, это не то, что
> хочешь. Оно? А призы будут?

Скорее всего драматизм в том,что ты читать не умеешь, читай ветку с самого начала.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру