簡體   English   中英

HTML中多個目錄的最佳做法

[英]Best practices with multiple directories in HTML

我沒有找到這個問題的明確答案(但已確定HTML標記比它值得的麻煩更多。)

當您在網站上使用多個目錄時,如何確保在更改當前目錄時與網站其余部分的相對鏈接有效? 當我轉到支持目錄時,我不希望我的“ /index.php”鏈接實際鏈接到“ /support/index.php”。

我們正在使用PHP,因此我可以使用輸出緩沖來更改鏈接,但是我想看看其他人是否有什么好主意。 也可以通過Smarty以一種或另一種方式實現它。 我並沒有從頭開始構建使用多個目錄的網站,這僅僅是因為我不知道一種簡單的處理方法,但是這個問題應該不會太困難。

(在IIS上運行,但是顯然最好讓它在任何服務器上都能工作。)

您可以聲明base_url變量,或聲明包含基礎URL的常量

例如

DEFINE('BASE_URL', 'http://example.com/');

使用鏈接時

例如

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

您已經擁有了所需的一切

當更改當前目錄時,如何確保指向網站其余部分的相對鏈接有效?

我們為此使用絕對鏈接

當我轉到支持目錄時,我不希望我的“ /index.php”鏈接實際鏈接到“ /support/index.php”。

幸運的你,它永遠不會發生

/index.php是絕對路徑,永遠不會指向/index.php之外的任何地方。

/不僅用於裝飾。 路徑開頭的斜杠的意思是“根目錄”。 因此, /index.php index.php placed in the root directory.表示將index.php placed in the root directory.
/support/index.php表示將index.php placed in the support directory which is placed in the root
十分簡單。 只使用絕對路徑(而不是毫無意義的URL)

我將“基本” URI存儲在兩個位置:(i)在PHP / Zend Framework服務器上,我的configuration.xml文件包含URI等常規值; (ii)在客戶端,一個更淺的,隱藏的<form/>包含其他(對安全性的影響較小)值,例如基本URI。

順便說一句,表單看起來像這樣:

<form id="AppSettings" action="#">
    <input type="hidden" id="MyBaseUri" value="http://superuser.com"/>
</form>

<base href="http://www.domain.com/">到您的<head>標記中。 這將使所有相對鏈接都從href給定的目錄開始。 然后使用不以/開頭的相對鏈接(例如support/index.php )(即,不是/support/index.php

注意 :將<base>標記設為<head>部分中的第一個標記,因為此后的所有鏈接都將從該基本目錄中解釋。 (例如,如果<link href="relative/path">如上定義,則將已經使用基本目錄。

優點 :您可以將整個頁面移到http://www.domain.com/page類的子目錄,而只需更改<base>標記。 如果您使用/support/index.php鏈接,它們將始終從根目錄(即http://www.domain.com/ )開始

網址重寫的動態基本目錄

<?php
    if  (preg_match("/https/i",$_SERVER["SERVER_PROTOCOL"]))
        $protocol = "https";
    else
        $protocol = "http";
    echo '<base href="'.$protocol.'://'.$_SERVER["HTTP_HOST"].dirname($_SERVER["SCRIPT_NAME"]).'/">';
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM