1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

правильное прописание ссылки при сжатии CSS

Тема в разделе "Web Coding", создана пользователем CoderW, 7 июн 2013.

Модераторы: latteo
  1. CoderW

    CoderW Постоялец

    Регистр.:
    17 янв 2013
    Сообщения:
    125
    Симпатии:
    55
    День добрый!
    Проблема с некоторыми браузерами, которые не могут прочитать ссылку к CSS файлу и сайт загружается без CSS что приводит к белому экрану с текстом.

    Ссылка выглядит вот так
    Код:
    application/css.php?request=application/modules/Hecore/externals/styles/imagezoom/core.css&c=9
    Протестировал с PageSpeed в Гугле и тот мне выдал по поводу этой ссылки следующее.

    Don't include a query string in the URL for static resources.
    Most proxies, most notably Squid up through version 3.0, do not cache resources with a "?" in their URL even if a Cache-control: public header is present in the response. To enable proxy caching for these resources, remove query strings from references to static resources, and instead encode the parameters into the file names themselves.

    Не включайте в строку запроса в URL для статических ресурсов.
    Типа не юзайте вопросительный знак в ссылках на файлы.

    Как это поправить?
    Да и ещё. Поставил PHP 5.4.9 и CSS загружался во всех браузерах, перешёл на PHP 5.3.25 (он просто мне под скрипт идеально подходит) и перестала ссылка работать в Delphin Browser например.

    Может есть какой то модул PHP который это как то правит, ведь в PHP 5.4.9 всё работало, но скрипт просто не компатибилен в некоторых моментах и по этому я на PHP 5.3.25

    Исходной код здесь:
    PHP:
    <?php // LINK/STYLES ?>
      <?php
        $this
    ->headLink(array(
          
    'rel' => 'favicon',
          
    'href' => ( isset($this->layout()->favicon)
            ? 
    $staticBaseUrl $this->layout()->favicon
            
    '/favicon.ico' ),
          
    'type' => 'image/x-icon'),
          
    'PREPEND');
        
    $themes = array();
        if( !empty(
    $this->layout()->themes) ) {
          
    $themes $this->layout()->themes;
        } else {
          
    $themes = array('default');
        }
        foreach( 
    $themes as $theme ) {
          if( 
    APPLICATION_ENV != 'development' ) {
            
    $this->headLink()
              ->
    prependStylesheet($staticBaseUrl 'application/css.php?request=application/themes/' $theme '/theme.css');
          } else {
            
    $this->headLink()
              ->
    prependStylesheet(rtrim($this->baseUrl(), '/') . '/application/css.php?request=application/themes/' $theme '/theme.css');
          }
        }
        
    // Process
        
    foreach( $this->headLink()->getContainer() as $dat ) {
          if( !empty(
    $dat->href) ) {
            if( 
    false === strpos($dat->href'?') ) {
              
    $dat->href .= '?c=' $counter;
            } else {
              
    $dat->href .= '&c=' $counter;
            }
          }
        }
      
    ?>
      <?php echo $this->headLink()->toString()."\n" ?>
      <?php echo $this->headStyle()->toString()."\n" ?>
    Может кто имел с этим дело. Прошу помощи знатоков!

    P.S.: Да и ещё. Я конечно же менял ссылку на статистическую и всё работало, но мне нужна обработка CSS так как CSS меняется постоянно.
     
  2. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.175
    Симпатии:
    2.195
    Вариант с модом реврайт не рассматриваете?
    Создайте правила так, чтобы ссылка выглядела как обычный css-файл и всё.
     
    CoderW нравится это.
  3. fcomp22

    fcomp22 Создатель

    Регистр.:
    22 фев 2013
    Сообщения:
    10
    Симпатии:
    6
    Попробуйте добавить в htaccess правило:

    RewriteEngine On
    RewriteRule ^style.css$ application/css.php?request=application/modules/Hecore/externals/styles/imagezoom/core.css&c=9

    и указывайте адрес своего стилевого файла как style.css, вместо application/css.php?request=application/modules/Hecore/externals/styles/imagezoom/core.css&c=9
     
    CoderW нравится это.
  4. CoderW

    CoderW Постоялец

    Регистр.:
    17 янв 2013
    Сообщения:
    125
    Симпатии:
    55
    Прописал:
    Вот мой .htaccess
    один раз прописал с "/" второй раз без "/" для теста ну и чтото не сработало :(
    Код:
    <IfModule mod_rewrite.c>
      Options +FollowSymLinks
      RewriteEngine On
     
      RewriteRule ^style.css$ application/css.php?request=application/modules/Hecore/externals/styles/imagezoom/core.css&c=9
      RewriteRule ^theme.css$ /application/css.php?request=application/themes/clean/theme.css&amp;c=9
     
      # Get rid of index.php
      RewriteCond %{REQUEST_URI} /index\.php
      RewriteRule (.*) index.php?rewrite=2 [L,QSA]
     
      # Rewrite all directory-looking urls
      RewriteCond %{REQUEST_URI} /$
      RewriteRule (.*) index.php?rewrite=1 [L,QSA]
     
      # Try to route missing files
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} public\/ [OR]
      RewriteCond %{REQUEST_FILENAME} \.(jpg|gif|png|ico|flv|htm|html|php|css|js)$
      RewriteRule . - [L]
     
      # If the file doesn't exist, rewrite to index
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^(.*)$ index.php?rewrite=1 [L,QSA]
     
    </IfModule>
     
    # sends requests /index.php/path/to/module/ to "index.php"
    # AcceptPathInfo On
     
    # @todo This may not be effective in some cases
    FileETag Size
    
    есть ещё идеи?



    Подходит! Но как правильно написать не подскажите?
     
  5. fcomp22

    fcomp22 Создатель

    Регистр.:
    22 фев 2013
    Сообщения:
    10
    Симпатии:
    6
    добавьте в конце правила [L]:

    RewriteRule ^style.css$ application/css.php?request=application/modules/Hecore/externals/styles/imagezoom/core.css&c=9 [L]
    RewriteRule ^theme.css$ application/css.php?request=application/themes/clean/theme.css&amp;c=9 [L]
     
    CoderW нравится это.
  6. CoderW

    CoderW Постоялец

    Регистр.:
    17 янв 2013
    Сообщения:
    125
    Симпатии:
    55
    ссылку добавил но ноль, никакой реакции.
    Код:
      RewriteRule ^core.css$ application/css.php?request=application/modules/Hecore/externals/styles/imagezoom/core.css&c=9 [L]
      RewriteRule ^theme.css$ application/css.php?request=application/themes/clean/theme.css&amp;c=9 [L]
    Может чтото в конфиге не так?
    Код:
    <VirtualHost *:80>
        ServerAdmin webmaster@localhost
     
        DocumentRoot /var/www
        <Directory />
            Options FollowSymLinks
            AllowOverride All
        </Directory>
        <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
        </Directory>
     
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
            AllowOverride All
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
        </Directory>
     
        ErrorLog ${APACHE_LOG_DIR}/error.log
     
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn
     
        CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
    есть ещё варианты? :(

    в принципе вот ссылка Перейти по ссылке
     
  7. fcomp22

    fcomp22 Создатель

    Регистр.:
    22 фев 2013
    Сообщения:
    10
    Симпатии:
    6
    указанный реврайт сработал, но ваш скрипт при обращении к Перейти по ссылке отредиректил (302 редирект) к
    Перейти по ссылке
    уберите в своём скрипте этот редирект, чтобы он не выдавал редирект, а выдавал код стилей, тогда будет работать нормально.
     
    CoderW нравится это.
  8. CoderW

    CoderW Постоялец

    Регистр.:
    17 янв 2013
    Сообщения:
    125
    Симпатии:
    55
    Всё понял! Спасибо большое! Думаю теперь уж точно разберусь и довиду до конца эту вещь! Реально выручил fcomp22!