如何使用PHP将导航栏href设置为绝对路径?

时间:2017-05-23 13:29:18

标签: php apache xampp href

我需要将这些锚点href标记设置为绝对路径,因为当我在文件夹中有html文档时,我包含很多东西的标题不起作用(在某些情况下需要../)。

我查看了一些建议使用的帖子:

$root = realpath($_SERVER['DOCUMENT_ROOT']);

$root = "http://" . $_SERVER['SERVER_NAME'];

第一个选项导致错误:

  

localhost /:1不允许加载本地资源:file:///C:/xampp/htdocs/trips/index.php%7D

第二个选项导致此错误:

  

警告:在第17行的C:\ xampp \ htdocs \ MountainPlanner \ includes \ header.php中,allow_url_include = 0在服务器配置中禁用了include():http://包装器

     

警告:include(http://localhost/MountainPlanner/includes/db.php):无法打开流:在第17行的C:\ xampp \ htdocs \ MountainPlanner \ includes \ header.php中找不到合适的包装器

     

警告:include():无法打开' http://localhost/MountainPlanner/includes/db.php'在第17行的C:\ xampp \ htdocs \ MountainPlanner \ includes \ header.php中包含(include_path =' C:\ xampp \ php \ PEAR')

如果有所作为,我正在使用XAMPP。

谢谢!

3 个答案:

答案 0 :(得分:1)

HREF导航栏路径!=系统路径

网址路径

这是您在浏览器地址中看到的内容,它被HTML(CSS,JavaScript等)使用。 PHP不需要担心它(除了一些流函数)。

要动态创建基本路径,我已使用此脚本

httpProtocol = !isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != 'on' ? 'http' : 'https';

$base = $httpProtocol.'://'.$_SERVER['HTTP_HOST'].'/';

并且,当放入href a标记时:

<a href="<?php echo $base; ?>link" title="Link">Link</a>

系统路径

服务器用于查找服务器上的任何文件的内容。 PHP将include / require用于服务器上的任何文件或共享文件。 Streams函数也可以使用系统路径和URL。

正如我所看到的,您正在询问系统路径。我已使用此代码规范化应用程序路径:

ini_set('include_path',
    implode(
        PATH_SEPARATOR, 
        array_merge(
            array(dirname(__FILE__)),
            explode(PATH_SEPARATOR , ini_get('include_path'))
        ) 
    )
);

然后,我的应用程序root只能用作我的应用程序的绝对路径:

/Application/Require.php
/Application/Script.php
index.php

它也适用于任何文件:

require('Application/Require.php');
require('Application/Script.php');

答案 1 :(得分:0)

将第一行设置在config或constants文件中的某个位置,甚至是文件中的第1行。

<?php $base_url = "http://localhost/mysite/"; ?>

然后你可以像这样创建href链接:

<a href="<?=base_url?>my-link">clickie</a>

答案 2 :(得分:0)

$ _ SERVER包含Web服务器填充的标头。它不可靠,它会禁止您的代码在本地或测试环境中运行。来自php.net:

  

$ _ SERVER是一个包含标题,路径和脚本位置等信息的数组。此阵列中的条目由Web服务器创建。无法保证每个Web服务器都能提供这些服务;服务器可以省略一些,或提供此处未列出的其他服务器。也就是说,在»CGI / 1.1规范中考虑了大量这些变量,因此您应该能够期待这些变量。

总之,不要依赖于此来提供有关您的服务器的信息。

PHP提供了魔术常量__FILE____DIR__,它们为您提供了当前文件的文件或目录的完整路径。

对于PHP包含,您应该将这些常量与您要访问的文件的相对路径一起使用。

例如:

include __DIR__ . '/../file_in_previous_directory.php';
include __DIR__ . '/file_in_same_directory.php';