странное поведение в codeigniter с загрузкой файлов css, js, img при добавлении косой черты (/) в конце URL - PullRequest
0 голосов
/ 21 июля 2011

Я прекрасно осведомлен о Codeigniter, но столкнулся с этой проблемой, пытаясь преобразовать статический сайт в CI.Проблема возникает при загрузке CSS-файлов, когда используются определенные URL-адреса.Я пытаюсь строго держать php подальше от просмотров (на самом деле хочу иметь только .html страниц для просмотров).

Я также искал на многих форумах решение для загрузки CSS.Я сталкивался с некоторыми решениями, но они помогают, только если вы создаете совершенно новый сайт в CI.Мне известно о

использовании до ссылки href, чтобы сделать сайт независимым

, но я не хочу использовать это, потому что я хочу преобразовать существующий статический сайт в CI.что означало бы изменение каждого href в каждом файле.(кажется, что это кошмар, если страниц много).

У меня проблемы с загрузкой файлов CSS и других ресурсов в определенных условиях.Ниже приведено описание всего, что я сделал до сих пор в проекте.

  1. использовал .htaccess в корне для удаления файла "index.php"
  2. использовал стандартную структуру папок, которая приходитс codeigniter 2.0.2
  3. все изображения и ресурсы (например, css, img, js. и т. д.) помещаются непосредственно в корневую папку (т. е. там, где находятся папки приложения и системы)
  4. все ресурсы доступны из файлов представления, как если бы html-файлы находились в корневой папке вместе с ресурсами (например, href = "css / style.css")

Ниже приведен примерописание контроллера

class Blog extends CI_Controller {

public function index(){
    $this->load->view('blog.html');
    }

public function posts(){
    $this->load->view('post.html');
    }
}

Теперь проблема, с которой я сталкиваюсь, заключается в том, что я использую определенный URL-адрес для функции «index».,CSS загружается правильно.

Но если я добавлю косую черту после этого или использую любую из других функций.Возникла проблема с загрузкой CSS.

Например.

 /* This url loads css correctly */
http://localhost/ci-test/blog

 /* these urls do not load css */
http://localhost/ci-test/blog/
http://localhost/ci-test/blog/posts

Что-то я делаю не так?или какая-то проблема с моим файлом .htaccess?(включено ниже)

RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 

Что мне нужно сделать, чтобы импортировать текущий веб-сайт в CI с минимальными усилиями.

Ответы [ 2 ]

1 голос
/ 21 июля 2011

все ресурсы доступны из файлов представлений, как если бы файлы html находились в корневой папке вместе с ресурсами (например, href = "css / style.css")

Ну, это не может работать, если внешний URL-адрес, который видит браузер, может иметь много уровней вложенных каталогов, не так ли? Чтобы заставить относительный URL работать с ci-test/blog, вы должны ссылаться на css/style.css, тогда как для того, чтобы он работал с ci-test/blog/posts, это могло быть только ../css/style.css.

Я предлагаю заменить все ссылки корневыми URL-адресами, такими как /ci-test/css/style.css, или если слишком много работы с <base href="/ci-test/"> или аналогичным в <head>, чтобы заставить все относительные URL вести себя как связанные с корневым URL-адресом.

1 голос
/ 21 июля 2011

Вы можете попробовать что-то вроде этого:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !^(index\.php|images|css|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA] 

Не уверен, сработает ли это последнее правило, потому что я не знаю, как работает маршрутизация CI, но то, что я привык к маршрутизаторам Zend и Symfony.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...