0

私は理解できない奇妙な行動を扱っています。

したがって、次のように入力します。

http://localhost/site/index.php

httpサーバーは問題なくページを返します。index.phpの後にスラッシュを付けると、スタイルのないページが生成されます。

http://localhost/site/index.php/

どうすればこれを解決できますか?

下のCSSリンクが機能しないのはなぜですか?

<link rel="stylesheet" type="text/css" href="/css/fonts.css" />

これはスラッシュでも機能しますが、スラッシュの後に何かを追加すると、スタイルのないすべてのWebサイトが表示されます。

<link rel="stylesheet" type="text/css" href="http://localhost/site/index.php/css/fonts.css" />

編集:

この関数を使用してhrefに完全なパスを追加すると、要求されたURLはすべてOKになります。

function baseUrl(){
    return ("http://".$_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']));
}

とにかく、.acccessにいくつかのルールを追加したので、index.phpの後にスラッシュを入力することはできませんが、スラッシュの後に何かを入力すると、すべてがバラバラになります:(

4

4 に答える 4

0

これはおそらく、CSS や画像などへの参照を定義する方法に関連しています。それらが相対パスとして定義されている場合は、おそらく間違ったディレクトリでそれらを探している可能性があります。

末尾のスラッシュを無視するように Apache を設定している可能性があります (index.php ディレクトリでインデックス ファイルを探すのではなく、単に index.php を提供するだけです)。しかし、クライアント ブラウザはこれを認識せず、index.php というディレクトリ内の何かを参照していると考え、そのディレクトリに関連するこれらのファイルを探しています。

これを修正するには、末尾のスラッシュを無視しないように Apache を構成する (そして適切な 404 エラーを発生させる) か、末尾のスラッシュをクリーンアップする書き換えルールを実装する必要があります。

于 2013-01-09T22:54:08.110 に答える
0

Apacheに問題はありません。ドキュメントは相対 URL を使用しています。

たとえば、href="myimage.png"代わりに指定します/myimage.png

ベース URL を変更すると、これらの相対 URL が壊れます。

于 2013-01-09T22:51:39.027 に答える
0

これは、css の絶対パスと相対パスに問題がある可能性があります<link />。必ず絶対パスを使用してください。

于 2013-01-09T22:51:39.953 に答える
0

<link />タグhref属性と<img />タグsrc属性の先頭に次のものが付加されているかどうかを確認し/ます。

悪い:

<link rel="stylesheet" type="text/css" href="css/style.css" />
<img src="img/image.png" />

良い:

<link rel="stylesheet" type="text/css" href="/css/style.css" />
<img src="/img/image.png" />

このようにして、ブラウザが正しいパスを計算することが確実になります。

于 2013-01-09T22:51:42.397 に答える