1

以下のようなヘッダーファイルを作成しました。

<style type="text/css" >
.menu{
    width: 100%;
    /*background-color: #333; */}
.menu ul{
    margin: 0; padding: 0;
    float: left;}

.menu ul li{
    display: inline;}

.menu ul li a{
    float: left; text-decoration: none;
    color: #000;
    padding: 10.5px 11px;
    /* background-color: #333; */}
    /* 
.menu ul li a:visited{
    color: white;}*/

.menu ul li a:hover, .menu ul li .current{
    color: #fff;
    background-color:#0b75b2;}

}
</style>
<div class="menu" style="width:430px; height:43px; margin-left:420px; margin-right:auto;">
<ul>
<li><a href="index.php">Home</a></li>
<li><a href="about.php">About us</a></li>
<li><a href="contact.php">Contact us</a></li>
<li><a href="image-gallery/index.php">Image Gallery</a></li>
<li><a href="articles/index.php">Articles </a></li>
</ul>
</div>

だから私は、画像ギャラリー、記事のような服従ディレクトリを持っています

ファイルパス :

www/websitename/index.php

ヘッダー.phpをメインのindex.phpにインクルードしましたが、正しくリンクされていますが、そのためのimage-galleryのインデックスファイルをインクルードすると、正しくリンクされません。

www/websitename/image-gallery/index.php
www/websitename/image-gallery/index.php
4

1 に答える 1

0

さまざまな解決策がありますが、実装する最も簡単な方法は、config.phpファイルにdefineを含めることです。定義は、とりわけ、ルートファイルとルートパスを指定します

config.php

define('ROOT_URL', 'http://www.example.com/');
define('ROOT_PATH', '/var/www/html');

次に、index.phpで、次のようになります。

include('config.php');
include('header.php');

また

include('../config.php');
include('../header.php');

そして、header.phpで

<li><a href="<?php echo ROOT_URL; ?>index.php">Home</a></li> 

このテーマには多くのバリエーションがあり、上記が最も単純ですが、他にもあります。

なぜこの方法ですか?config.phpで使用できるため

if($ _SERVER ['HTTP_HOST'] =='staging.example.com'){//定義の1つのセット}else{//ライブを想定-ユーザー別の定義のセット}

上書きせずにdev/staging/liveからファイルをコピーします。


インクルードの「../」とは対照的に、各ファイルに「./」または「../」として可変の「root_file」を作成します。次に、include($root_file。'header.php'); すべてのスクリプトでこれを行い、リンクにも使用できます。


完全なURLを指定する場合、httpsとhttpの間をフリックすると、「http://」の部分を除外して、使用しているスキームを追加することができます。コード(または関数でリンクを構築する)にURLを追加します


詳細をデータベースに保存することをお勧めします(この場合、DB接続の資格情報をconfiginstreadに保存する可能性があります。


__FILE__最後に、$ _ SERVER [''](http://php.net/manual/en/reserved.variables.server.php)変数、​​または__ DIR__(http://php.net/manual/en/language)を使用できます。.constants.predefined.php)を使用して、現在地を特定します。REQUEST_URIはスクリプトがどこにあるかを正確に反映しない可能性があるので注意してください(書き換えルールに.htaccessを使用している場合)。また、シンボリックリンクを使用している場合はSCRIPT_FILENAME//__FILE____DIR__嘘をつく可能性があります。しかし、サーバーの構成を知っている場合、これは「私はどこにいますか?」を処理するための非常に移植性の高い方法です。

だから、たくさんのオプション。シンプルに始めて、ニーズがエスカレートするにつれて積み上げていきます。

于 2012-05-20T13:28:30.143 に答える