1

URLに小さなウェブサイトがありますlocalhost/site/。それはと呼ばれる画像を保存するためのファイル.htaccess、ファイル、フォルダを持っていますindex.phpimg

.htaccessファイル

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.+) index.php?url=$1 [QSA,L]

上記のコードのように、URLがディレクトリまたはファイルでない場合、すべてのURLlocalhost/siteがリダイレクトされます。index.php

index.phpファイル

<html>

<body>
    <img src="img/logo.png"/>
</body>

</html>

問題

localhost/siteまたはに移動すると、正常localhost/site/[any_text]に動作index.phpし、ファイルが正常に読み込まれますimg/logo.png

しかし、 (実際には終了せず、リクエストのみ)のlocalhost/site/[any_text]/[any_text]サブディレクトリに移動したり、さらに移動したりすると、ロードされませんlocalhost/siteindex.phpimg/logo.png

それで、それはなぜですか?

4

2 に答える 2

1

これは、先頭のスラッシュまたはプロトコルやドメインなどの別の形式のロケーターなしで含まれている画像が、パスが現在表示されているパスに相対的であるとクライアントに想定させるために発生します。したがってhttp://example.com/folder/page.html、相対画像パスimg/logo.pngを表示している場合は、クライアント要求を行いますhttp://example.com/folder/img/logo.png

代わりに先頭のスラッシュを挿入すると、画像がサイトのルートを基準にして配置されていることをクライアントに通知し、代わりにクライアントがファイルを要求するようになりますhttp://example.com/img/logo.png

正しい画像のHTMLコードは次のようになります。

<img src="/site/img/logo.png" />
于 2013-01-03T12:05:00.500 に答える
0
<img src="/img/logo.png"/>
          ^ note the leading slash
于 2013-01-03T11:59:50.717 に答える