1

PHP は初めてで、インクルードを使用して CSS ファイルをリンクしようとすると問題が発生します。

基本的に、ファイルがどれだけ下にあるかに関係なく、ファイルを特定のディレクトリにリンクする必要があります。使ってみました

<?php
    include $_SERVER['DOCUMENT_ROOT'] . '/sysprogs/required/header.html'; 
?>

しかし、header.html には私の css ファイルへのリンクが含まれているため、最終的に css ファイルを探すディレクトリは

http://localhost/SysProgs/software/CSS/style.css

どこに行きたいかの代わりに

http://localhost/SysProgs/required/CSS/style.css

それが理にかなっていることを願っています。あなたが私を助けてくれることを願っています

皆様、ご協力ありがとうございました!

4

5 に答える 5

7

私は絶対に使いません<base>。私は以前にこれで多くの問題に遭遇しました。を使用する<base>と、すべてのリンクがそのベース値に対して相対的になります。

代わりに、共通ディレクトリに PHP 定数を設定することをお勧めします。例えば:

PHP コード:

<?php
    define('CSS_DIR', '/SysProgs/required/CSS/');
?>

HTML コード:

<link href="<?php echo CSS_DIR ?>style.css" rel="stylesheet" type="text/css" />
于 2010-05-04T18:43:56.627 に答える
3

一つのアイデア

の完全な URL を使用しますheader.html。これは明確で堅牢です。

<head>
<link href="/FULL_BASE_URL/style/style.css" rel="stylesheet" type="text/css" />
</head>

別のアイデア

<base>ヘッダータグを使用してください。これにより、CSS を含むリンクのベース URL を指定できるようになり、短期的には最小限の作業で済みます (以下の注を参照)。

<head>
<base href="FULL_BASE_URL" />
<link href="style/style.css" rel="stylesheet" type="text/css" />
</head>

w3schoolsの詳細

注:以下のコメントに記載されているように、base最終的には必要以上に混乱を招く可能性があります。

于 2010-05-04T18:05:54.463 に答える
2

アプリケーションの中心的な場所で絶対パスと webroot の両方を定義するのが好きです。

<?php

  define("APP_WEBROOT", "/myapp"); 
  define("APP_ROOTDIR", "/home/www/example.com/htdocs/myapp");

 ?>

次に、次のように正しいリンクを「絶対化」できます。

<?php echo APP_WEBROOT; ?>/software/CSS/style.css

私はこれを好む

  • そのタグは混乱を<base>引き起こし、長期的にはコードを維持するのが難しくなるためです

  • 絶対パスを使用/software/CSS/style.cssすると、選択したサブディレクトリにアプリケーションをインストールできなくなるためです。常にルート ディレクトリにバインドされます。

于 2010-05-04T18:30:06.090 に答える
0

サイトをデザインするときに、この問題によく遭遇します。カスタムCMSを使用している場合、次を使用します。

$basedir = "root_directory/";
$basedirPHP = $_SERVER['DOCUMENT_ROOT'].$basedir;
$basedirHTML = "http://".$_SERVER['SERVER_NAME'].$basedir;

$ basedirを定義して、サーバー内の別のサブディレクトリにサイトを簡単に移動できるようにします。$basedirPHPと$basedirHTMLは、CSSやJSなどをリンクするときに、phpを使用して、または前述のようにファイルを呼び出すことができるようにするためのものです。

あなたがワードプレスを使用している場合はbloginfo('template_directory');、テンプレートファイルで同じことを行うために古き良きものを使用してください。

于 2010-05-04T21:31:02.417 に答える
-2

あなたが最初に理解することは、あなたの質問にはPHPに関連するものがないということです。HTML 質問のファイル名と同じくらい簡単です。PHPがなければ、同じままです。CSSファイルへの絶対パスを使用するだけです

もう 1 つ考えるべきことは、いくつかの質問を受け入れることを検討することです。

于 2010-05-04T18:26:38.647 に答える