загрузка css или javascript из закрытого каталога

есть ли способ загрузить файлы css и/или javascript из-за пределов общедоступного веб-каталога?

например, на моем хостинге у меня есть /public_html, но я не хочу, чтобы эти файлы существовали в общем каталоге, и хочу, чтобы они находились в каталоге за пределами общего каталога в родственном каталоге /system (я использую codeigniter) в /system /приложение/вид/


person twmulloy    schedule 28.05.2010    source источник
comment
В этом нет смысла. Вы хотите использовать содержимое этих файлов, поэтому поместите их в папку public_html.   -  person halfdan    schedule 28.05.2010
comment
я знаю, что хочу их обслужить, я имел в виду, что есть способ обработать эти файлы из какого-то источника, не являющегося общедоступным. раздражает наличие слоя представления, который существует как css/js в /public, в то время как ваши шаблоны представлений находятся за пределами общедоступного в каком-то другом каталоге. поэтому ради сохранения всех компонентов представления я хотел бы, чтобы все эти файлы существовали в одном каталоге, а не все в public_html. однако вопрос имеет смысл.   -  person twmulloy    schedule 28.05.2010


Ответы (4)


Да -- в некотором роде -- и уменьшить [http://code.google.com/p/minify/] — это один из подходов.

Посмотрите на строку 39 файла конфигурации [http://code.google.com/p/minify/source/browse/trunk/min/config.php]. Здесь вы увидите, где находится ваш минифицированный кеш за пределами веб-корня. Теперь я не знаю, могут ли исходные JS и CSS находиться в том же каталоге, что и кеш.

person Christopher Altman    schedule 28.05.2010
comment
это именно то, что я ищу. У меня был мозговой пердеж, когда я печатал свой вопрос, но вы прибили его. Благодарность! - person twmulloy; 28.05.2010

В конечном итоге Javascript и таблицы стилей обрабатываются на стороне клиента. По этой причине не существует решения, которое действительно скрыло бы ваш javascript или CSS от общественности.

Одним из возможных решений является загрузка требуемого файла CSS/Javascript через PHP с помощью чего-то вроде file_get_contents(), а затем вывод его непосредственно на страницу с использованием встроенных стилей/скриптов.

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

person Andy Baird    schedule 28.05.2010

Не без общедоступного прокси.

Вам потребуется file_get_contents() или include их, а затем разместить на своей странице.

Вы не можете просто сделать ../../system и получить выше DOCROOT.

Они должны быть обработаны браузером, поэтому они должны быть доступными.

Если вы хотите помешать людям просматривать ваш исходный код в удобочитаемом виде, проверьте CSS minify и упаковщик JS. Это, конечно, только запутывает код. Любой решительный сможет прочитать ваш JavaScript и посмотреть, что он делает.

Почему вы не хотите, чтобы люди читали ваш CSS или JavaScript?

person alex    schedule 28.05.2010
comment
никогда не говорил, что не хочу, чтобы они читали файлы, это не проблема. я просто хочу хранить все файлы представлений и общедоступные файлы в одном каталоге, в отличие от разделения шаблонов представлений и javascript/css в файловой структуре codeigniter. - person twmulloy; 28.05.2010

Я знаю, что вы имеете в виду, twmulloy, кажется непоследовательным иметь информацию, связанную с «просмотром», в разных местах. Однако учтите, что файлы JS и CSS — это ресурсы, поддерживающие представления, а не части самих представлений.

Тем не менее, вы можете достичь того, чего хотите, несколькими способами. Один из них может состоять в том, чтобы написать контроллер, который принимает запросы на ваши ресурсы JS/CSS и выводит заголовок и данные из соответствующего места (файл представления, база данных, где угодно). Однако это неэффективно по сравнению с просто принятием «неопрятности» извлечения файлов из подпапки корневого уровня public_html. Я, как и многие комментаторы выше, считаю, что это лучшее решение из-за его скорости и уместности; просто иметь каталог «активы» на том же уровне, что и «системный», с изображениями, css, js и т. д. внутри. Вы можете использовать псевдоним или виртуальную папку, чтобы вам было удобнее...

Однако есть и третий способ. Существуют библиотеки, которые делают что-то ПРОСТО похожее на то, что вы хотите, с дополнительным преимуществом Minify (из принятого ответа) и сжатия или чего угодно. Две известные мне библиотеки называются AssetLibPro и Carabiner, и они позволяют вам указать путь к ресурсу (как вы хотите), а затем загрузить файлы JS и CSS (с группами, например, экран, печать, если необходимо). Затем они обслуживают все связанные CSS/JS и т. д. в виде одного файла; сжатые, минимизированные, кэшированные... все, что вам нужно.

person Kurucu    schedule 04.06.2010