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

CoderW

Гуру форума
Регистрация
17 Янв 2013
Сообщения
132
Реакции
59
День добрый!
Проблема с некоторыми браузерами, которые не могут прочитать ссылку к 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 меняется постоянно.
 
Вариант с модом реврайт не рассматриваете?
Создайте правила так, чтобы ссылка выглядела как обычный css-файл и всё.
 
Попробуйте добавить в 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
 
Попробуйте добавить в 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
Прописал:
Вот мой .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
есть ещё идеи?

Вариант с модом реврайт не рассматриваете?

Создайте правила так, чтобы ссылка выглядела как обычный css-файл и всё.


Подходит! Но как правильно написать не подскажите?
 
добавьте в конце правила [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]
 
добавьте в конце правила [L]:

ссылку добавил но ноль, никакой реакции.
Код:
  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>

есть ещё варианты? :(

в принципе вот ссылка Для просмотра ссылки Войди или Зарегистрируйся
 
указанный реврайт сработал, но ваш скрипт при обращении к Для просмотра ссылки Войди или Зарегистрируйся отредиректил (302 редирект) к
Для просмотра ссылки Войди или Зарегистрируйся
уберите в своём скрипте этот редирект, чтобы он не выдавал редирект, а выдавал код стилей, тогда будет работать нормально.
 
Всё понял! Спасибо большое! Думаю теперь уж точно разберусь и довиду до конца эту вещь! Реально выручил fcomp22!
 
Назад
Сверху