繁体   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