web-dev-qa-db-ja.com

ベースタグが相対パスで機能しないのはなぜですか?

ページのヘッドセクションに以下のBASEタグがあります。

<base href="http://localhost/framework">

そして、相対的な(もちろんベースタグの後)以下のようなスクリプト:

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

しかし、firebugからjQueryを開くと、次のように表示されます。

<!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">  

私はどこでも答えを探しましたが、私は自分の仕事を正しくやっているようです!それで問題は何ですか?

47
ALH

/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>

*実際に尋ねる人に応じて、現在のドメインからの相対であるため、依然として相対です。しかし、現在のドメインに基づいて、パスがルートからのものであることを示しているため、この絶対呼び出しを好む。しかし、技術的にはそれが物事の大規模なスキームでは相対的であり、現在のドメインの観点からのみ絶対的だと思います。なんでも。

100
Rudi Visser

次のようなベースタグを試してください:

<base href="http://localhost/framework/">

そして、あなたのスクリプトタグのような:

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