Подтвердить что ты не робот

Почему базовый тег не работает для относительных путей?

У меня есть тег BASE, как показано ниже в разделе заголовка страницы:

<base href="#" onclick="location.href='http://localhost/framework'; return false;">

И script, как ниже, относительно (конечно, после базового тега):

<script src="/assets/jquery-1.7.1.min.js">

Но когда я открываю jQuery из firebug, он показывает:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body> 
Blah Blah Blah....

Когда я использую нижеследующую ссылку, это ОК, хотя:

<script src="http://localhost/framework/assets/jquery-1.7.1.min.js">  

Я искал ответ повсюду, но, похоже, я делаю свою работу правильно! Итак, в чем проблема?

4b9b3361

Ответ 1

/assets/jquery-1.7.1.min.js не является относительным, но абсолютным *, / переносит его в корень даже с тегом base.

Если вы удалите этот /, он должен сделать его относительным относительно текущего пути, который, если присутствует тег base, будет http://localhost/framework/.

Вам также необходимо добавить конец / в конец href, чтобы указать, что это папка.

Полный рабочий пример:

<!doctype html>
<html>
<head>
<base href="/test/" />
<script src="assets/test.js"></script>
<body>
hi
</body>
</html>

* Фактически, в зависимости от того, кого вы спросите, он по-прежнему относительный, поскольку он относителен относительно текущего домена. Но я предпочитаю называть это абсолютным, поскольку это означает, что путь принадлежит корню, основанному на текущем домене. Хотя, я думаю, технически это делает его относительным в великой схеме вещей и абсолютным только в терминах текущего домена. Безотносительно.

Ответ 2

Попробуйте использовать базовый тег:

<base href="#" onclick="location.href='http://localhost/framework/'; return false;">

и тэг script:

<script src="assets/jquery-1.7.1.min.js">