3

私はこのプロジェクトを持っています:

ここに画像の説明を入力してください

インデックスでは、次のコードでURLを確認します。

if( isset( $_GET['url'] ) ) {
   if( file_exists( 'classes/layout/'.$_GET['url'].'.php' ) ) {
    require_once 'classes/layout/'.$_GET['url'].'.php';
   } 
}

そして私の.htaccesではこれ:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [L]
RewriteRule ^(.*?)$ index.php?url=$1&%{QUERY_STRING} [L]

これはうまくいきます。例:127.0.0.1 / test / pages / editに移動すると、インデックスにはedit.phpが含まれますが、インデックスでは、次の名前のcssファイルを使用します:test.cssこれにより、htmlの背景全体が赤になります。

127.0.0.1 / test /に移動すると、背景全体が赤く表示されます。しかし、127.0.0.1 / test / pages / editに移動すると、白になります。cssファイルのURLを確認したところ、次のようになりました。

127.0.0.1 / test / = 127.0.0.1 / test / cache / css / test.css

127.0.0.1 / test / pages / edit = 127.0.0.1 / test / pages / cache / css / test.css

誰かがこれを修正する方法を知っていますか?

4

2 に答える 2

1

CSS リンクを絶対にする (で始まる/test/) か、これをページ ヘッダーに追加して、すべての相対リンクのベースを追加する必要があります。

<base href="/test/">

(ベース URI を調整する必要があるかもしれませんが、それをしたいようです/test/)

これが発生する理由は、読み込まれた URL に応じてブラウザが URI ベースを推測するためです。ブラウザーに配置http://127.0.0.1/test/すると、ブラウザーは URI ベースが である/test/と想定し、すべての相対リンクの前にそれが追加されます。http://127.0.0.1/test/pages/editしかし、ブラウザに入れると、ベースが である/test/pages/と想定されるため、相対リンクの先頭に間違ったベースが追加されます。

于 2012-11-11T20:35:48.557 に答える
1

The problem is that u did not give the proper path to the css. Always try to call style/script from base url as below: Hope this helps.

   <?php 
if($_SERVER['REMOTE_ADDR'] == '127.0.0.1')
   define("SITEROOT","http://localhost/test/"); // base to your web directory ie,www or htdocs
    ?>
    //call style in this manner
    <link href="<?php echo SITEROOT; ?>Sourcefiles/cache/css/test.css" rel="stylesheet" type="text/css" />
于 2012-11-11T19:26:44.823 に答える