2015-08-20 6 views
0

Я добавил файла JavaScript на мой веб-страницы, как это:Атрибут SRC работает только с относительным путем

<script type="text/javascript" src="../../js/filename.js"></script> 

Это прекрасно работает. Тем не менее, я тогда пытался изменить относительный путь к абсолютному пути, как это:

<script type="text/javascript" 
     src="/home/name/domains/domain.com/public_html/js/filename.js"></script> 

Это приводит к тому, чтобы этот сервер реагирует с 404 (Not Found) статусом.

Я уверен, что это правильный абсолютный путь к этому файлу, так как импорт определенного файла php с использованием require_once() с очень похожим абсолютным путем работает без проблем. Фактически, функция PHP realpath("../../js/filename.js") дает "/home/name/domains/domain.com/public_html/js/filename.js".

Что я делаю неправильно?

ответ

3

Ключевым моментом является то, что <script> тег interpretd стороне клиента в то время как PHP включают в себя интерпретируется стороне сервера.

на стороне сервера, то путь будет относительно файловой системы (будучи абсолютно или относительно текущего каталога)

на стороне клиента (= со стороны браузера), то путь будет относительно текущей страницы URL.

Если вы текущая страница: http://domain:port/page.php,

ваш браузер пытается загрузить http://domain:port/home/name/domains/domain.com/public_html/js/filename.js

, который имеет много шансов не быть служить вашим сервером.

Каталог «root» для вашего сервера выглядит /home/name/domains/domain.com/public_html.

так что "абсолютный путь" с точки зрения клиента, для вашего файла JS, будет:

<script type="text/javascript" src="/js/filename.js"></script>

+0

Конечно. Благодаря :) –

0

Попробуйте это:

<script type="text/javascript" src="<?php echo $_SERVER['DOCUMENT_ROOT']; ?>/js/filename.js"></script> 

Я не вижу смысла в работе с абсолютными путями. Вы должны сделать свой код более динамичным.

1

Вам не нужен полный путь к тому месту, где сервер хранит вашу информацию. Конфигурация Apache, Nginx и т. Д. Позаботится о создании корня для вас, а затем вам нужно будет с этим справиться.

Попробуйте изменить:

<script type="text/javascript" src="../../js/filename.js"></script>

к:

<script type="text/javascript" src="/js/filename.js"></script>

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