За последние 24 часа нас посетили 17673 программиста и 1714 роботов. Сейчас ищут 1719 программистов ...

Помогите с RewriteRule

Тема в разделе "PHP для новичков", создана пользователем vitaliyw, 3 авг 2006.

  1. Anonymous

    Anonymous Guest

    Я не говорил что это проще...
    Просто как то вошло в привычку это делать...
     
  2. Border

    Border Активный пользователь

    С нами с:
    22 авг 2006
    Сообщения:
    41
    Симпатии:
    0
    Вполне возможно, что я все организую не правильно и не оптимально, но делаю так, как понимаю ..
    Чтобы было возможно обращение к некоторым папкам ( в данном случае "Common") по http, но только с моего хоста, для чего и поставил второе правило.
    А все остальные запросы пускать на index.php. Мне не важно идет обращение к файлу или каталогу .. В index.php сравниваю отдельные части URI с допустимыми значениями и формирую страницу.

    ЗЫ. Наверное первое условие можно убрать и сделать просто
    RewriteRule .* index.php
     
  3. Border

    Border Активный пользователь

    С нами с:
    22 авг 2006
    Сообщения:
    41
    Симпатии:
    0
    Да, условие "не с моего хоста" - лишнее. Подскажите какие еще есть варианты для css и картинок, кроме предложенного Горбуновым Олегом.
     
  4. def

    def Активный пользователь

    С нами с:
    24 апр 2006
    Сообщения:
    230
    Симпатии:
    0
    Адрес:
    Питер
    Я тебе привел рабочий код, мне там нужны папки, потому они там и есть. Второе условие - как раз для файлов (сss, image, js и прочее).
    это первое

    в таком случае приведенный тобой код - верный. он же у тебя работает ?

    но я все же не понимаю - только с твоего хоста ? а что в этой папке и зачем такое странное условие можешь пояснить ? любопытно.
     
  5. Border

    Border Активный пользователь

    С нами с:
    22 авг 2006
    Сообщения:
    41
    Симпатии:
    0
    Он у меня работает.
    Я еще не все процессы понимаю, поэтому наверняка что-нить перемудриваю.
    В папке ничего особенного, просто собрал туда общие файлы (элементы) для всех страничек в том числе стили и картинки. Поскольку не знал как при общем перенаправлении запросов на index.php по-другому разрешить загрузку стиля и картинок , то выделил для этой папки условие отменяющее перенаправление на index.php. А чтобы ее не было видно отовсюду по http://myhost/Common, то и поставил условие "с моего хоста".

    ЗЫ. def я понял, что еще не объяснил (или недоходчиво объяснил). Мне нужно, чтобы любой запрос в том числе и к файлу http://myhost/anypath/to/anyfile.txt(любое расширение) попадал на index.php поэтому условие проверки "если не файл" не подходит. Может быть так нельзя(=не рекомендуется) делать? Тогда объясни,плз, в чем могут возникнуть трудности.
     
  6. def

    def Активный пользователь

    С нами с:
    24 апр 2006
    Сообщения:
    230
    Симпатии:
    0
    Адрес:
    Питер
    Ага, вот именно этой фразы не хватало.
    Конечно, если файл реально существует, тогда мой вариант тебе не подходит.

    Хотя мне такая организация не нравится, если файл реально есть, он должен реально быть. Это сугубо мое мнение.

    Что касается, вот этого:

    совершенно верно :)
     
  7. Border

    Border Активный пользователь

    С нами с:
    22 авг 2006
    Сообщения:
    41
    Симпатии:
    0
    Ну, наконец-то поняли друг-друга :) .
    Он может и быть, только все разруливается через index.php...
     
  8. Anonymous

    Anonymous Guest

    Кстати, каков минус - для получения эл-тов оформления будет использоватся скрипт PHP а это не есть производительно. Вот поэтому я предлагал просто убирать из парсинга картинки и css файлы.
    НО! Всплывает интересная возможность... генерировать css файл с определением браузера! Что есть довольно интересно.
     
  9. def

    def Активный пользователь

    С нами с:
    24 апр 2006
    Сообщения:
    230
    Симпатии:
    0
    Адрес:
    Питер
    погоди, картинки и css будут забираться из Common :)

    а по поводу css. кто мешает
    Код (Text):
    1.  
    2.     <link href='/css/auto.php" type='text/css' />
    ? :)
     
  10. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    def

    эх ... опоздал ... хотя я так и делаю ...

    на php.ru так и отдается. все цвета подcтавляются из конфига и когда парсится css шаблон, то все подставляется автоматом.

    Код (Text):
    1.  
    2. <LINK REL="stylesheet" TYPE="text/css" HREF="/getcss.html">
    PHP:
    1.  
    2. <?
    3.  
    4. # GETCSS.HTML
    5.  
    6. header ("Content-Type: text/css;");
    7.  
    8. if(!empty($_SERVER))    extract($_SERVER);
    9. if(!empty($_GET))       extract($_GET);
    10.  
    11. include_once("local.inc");
    12. include_once("const.inc");
    13. include_once("buffer.inc");
    14. include_once("error.inc");
    15.  
    16. if(empty($CSS)) $CSS = "";
    17.  
    18. switch($CSS) {
    19.     case "ADM":
    20.         @include_once("./adm/local.inc");
    21.         $C = new OOPSBuffer("css/adm.css");
    22.         $C->Parse();
    23.         break;
    24.     default:
    25.         @include_once("./local.inc");
    26.         $C = new OOPSBuffer("css/oops.css");
    27.         $C->Parse();
    28.         break;
    29. }
    30.  
    31. $C->Show();
    32.  
    33. ?>
    34.  
    p.s. *.html по умолчанию отдается php.

    p.p.s все включаемые файлы лежат выше корня сайта, так что не надо лишний раз набирать в строке то, чего броузер вам не отдаст.
     
  11. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    минус. после сохранения страница может быть открыта в другом браузере.

    и еще, не проще ли для разных браузеров разный css файл отдавать?
     
  12. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    проще делать кросброузерную верстку, а не выделываться ...
     
  13. Border

    Border Активный пользователь

    С нами с:
    22 авг 2006
    Сообщения:
    41
    Симпатии:
    0
    Надо попробовать, хотя к моей проблеме это отношения не имеет.
    Чтобы не зависеть от местонахождения файла изменил второе правило
    Код (Text):
    1. RewriteCond %{HTTP_REFERER} http://myhost.*
    2. RewriteRule  !\.css$  index.php
    ЗЫ. Кстати, первое условие нужно все-таки ставить
    Код (Text):
    1. RewriteCond %{HTTP_REFERER} !http://myhost.*
    2. RewriteRule  .*  index.php
    иначе при обращении не с myhost файлы из второго правила не подключатся, т.к. втрое условие по HTTP_REFERER не выполнится
     
  14. def

    def Активный пользователь

    С нами с:
    24 апр 2006
    Сообщения:
    230
    Симпатии:
    0
    Адрес:
    Питер
    Да хоть так.

    Код (Text):
    1. RewriteRule  !\.(css|jpg|gif|jpeg)$  index.php
    re: зы, я ничего из твоего первого кода не предлагал удалять :)