Rewrite для поддомена но с сохранением остальных ссылок

Тема в разделе "Mod Rewrite / htaccess / ЧПУ", создана пользователем Albert22, 30 июл 2009.

Статус темы:
Закрыта.
  1. Albert22

    Albert22

    Регистр.:
    30 мар 2008
    Сообщения:
    270
    Симпатии:
    10
    Привет
    Имеется вот такой набор директив:
    Код:
    RewriteEngine on
    RewriteBase /
    RewriteCond %{HTTP_HOST} !^(www\.)?domain\.tld(.*)$
    RewriteCond %{HTTP_HOST} ^(www\.)?(([a-zA-Z0-9-]+)\.){1}domain.tld$
    RewriteCond %{REQUEST_URI} !profile/
    RewriteRule ^(.*)$ profile/%2/$1
    
    Он работает — маскирует domain.tld/profile/user под user.domain.tld. В DNS всё прописано.
    Но на отображаемой странице подключены стили и скрипты, причём вызываются по относительному пути с корня. Т.е. код
    HTML:
    <link rel="stylesheet" type="text/css" href="/styles/styles.css">
    на адресе
    Код:
    http://user.domain.tld
    пытается загрузить стиль с
    Код:
    http://user.domain.tld/styles/styles.css
    вместо основного
    Код:
    http://domain.tld/styles/styles.css
    То же самое и Javaскрипты: разные HTTP-запросы они выполняют по текущему домену (который является поддоменом), а там конечно же ничего нет.
    Как сделать чтобы фильтровался запрашиваемый адрес и всё, что содержит хоть какой-то путь, возвращать назад на основной домен? Я переписал адреса подключаемых файлов на фиксированный основной домен, но это не самый разумный путь учитывая то, что вконтакте в теле скриптов сохранены относительные пути, и на поддоменах всё работает, запросы выполняются.
    Подскажите пожалуйста
     
  2. ZuArt

    ZuArt Создатель

    Регистр.:
    11 фев 2008
    Сообщения:
    16
    Симпатии:
    4
    заставить именно в коде страницы браузер считать конструкцию вида "/styles/styles.css" как "http://domain.tld/styles/styles.css" нереально... т.к. браузер САМОСТОЯТЕЛЬНО подставляет адрес домена, раз ты указываешь ему относительность (пусть даже и от корня). Откуда вообще это браузеру знать?

    Другой разговор, что можно попытаться разместить все подгружаемые из основного домена файлы (CSS, JS и т.д.) в какую-то одну(!!!) конкретную папку в коре домена, например "srsc" и дописать в htaccess строку безусловного перенаправления адресов с содержанием этой строки на домен при условии, что адрес на поддомене...

    Саму регулярку не напишу, т.к. навскидку рискую накосячить сильно =)
     
  3. qwertya

    qwertya Писатель

    Заблокирован
    Регистр.:
    2 июл 2009
    Сообщения:
    11
    Симпатии:
    0
    ИМХО, вариант с относительными путями не катит, я всегда использую явный путь, ибо проблем не оберешься!
     
  4. mptz

    mptz

    Регистр.:
    22 июн 2006
    Сообщения:
    436
    Симпатии:
    180
  5. andrnag

    andrnag

    Регистр.:
    26 мар 2008
    Сообщения:
    350
    Симпатии:
    125
    Да, попробуй добавить тег BASE, только не url туда вписать, а адрес основного домена. Типа: <base href="http://domain.tld/">.

    Хотя, я не пробоавал, получится ли таким образом, разрешить выполнение JavaScript в рамках domain.tld при запросе страницы с user.domain.tld (Надо попробовать, отпишись потом о результатах, пожалуйста)
     
  6. Albert22

    Albert22

    Регистр.:
    30 мар 2008
    Сообщения:
    270
    Симпатии:
    10
    Вот как раз с этим и намучался, пока вернул всё назад.
    Говорят document.domain помогает, но у меня пока безрезультатно
     
Статус темы:
Закрыта.