如何在包含文件中编写超链接

时间:2011-05-25 19:27:52

标签: php hyperlink include xampp

我的本​​地计算机上有一个网站(Windows 7,XAMPP)。我的网站使用了一些PHP包含。包含将出现在网站的许多页面上,可能嵌套在许多级别的目录中。这使得无法使用相对链接。通过使用绝对链接解决了这个问题,但绝对链接在本地计算机上与远程服务器上的不同。例如,我会为Web服务器编写一个包含文件,如:

<nav id="main">
  <ul>
    <li><a href="http://domainname.com/topic1/">Topic1</a></li>
    <li><a href="http://domainname.com/topic2/">Topic2</a></li>
  </ul>
</nav>

但在我的本地机器上,我必须写:

<nav id="main">
  <ul>
    <li><a href="C:\xampp\htdocs\website\topic1\index.php">Topic1</a></li>
    <li><a href="C:\xampp\htdocs\website\topic2\index.php">Topic2</a></li>
  </ul>
</nav>

有谁知道这个问题一般是如何处理的?

6 个答案:

答案 0 :(得分:2)

大多数框架通过使用配置值($base_url = 'http://www.domain.com';)处理此问题,然后在创建链接时调用它。

<nav id="main">
  <ul>
    <li><a href="<?php echo $base_url;?>/topic1/">Topic1</a></li>
    <li><a href="<?php echo $base_url;?>/topic2/">Topic2</a></li>
  </ul>
</nav>

只要您记得在服务器之间移动时更改基本URL,这就可以解决问题。

但是,您仍然不应该链接到C:\xampp\htdocs\website\topic1\index.php之类的内容,它应该是http://localhost/website/topic1/index.php

答案 1 :(得分:2)

无需将文档根存储在配置中,每次重新定位应用程序时都必须更改它。

使用DOCUMENT_ROOT服务器变量:

<a href="<?php echo $_SERVER['DOCUMENT_ROOT']; ?>/path/to/file.php">Link</a>

答案 2 :(得分:1)

您可以在随处包含的配置.php文件中定义常量:

define('ROOT_URL', '/');

如果您使用的是Windows匹配(您可能会在http://localhost/...运行网络应用,而不是C:\请求PHP文件),请将其更改为:

define('ROOT_URL', '/website');

然后在生成链接时使用此常量:

<li><a href="<?php echo ROOT_URL ?>/topic1/index.php">Topic1</a></li>

答案 3 :(得分:1)

您可以使用相对链接(正斜杠是不错的选项):

<a href="../topic2/index.php">Link to Topic 2</a>

或使用PHP变量的绝对链接:

<?php
    $topUrl = 'c:/xampp/htdocs/website';
?>
<a href="<?=$topUrl?>/topic2/index.php">Link to Topic2</a>

但我的优先解决方案是使用一些模板引擎 - 我预感Smarty

答案 4 :(得分:1)

“/”相当于'http://www.mydomain.com'或'http:// localhost'(您网站的根目录)并保留您的http或https协议,为什么已经存在?如果您将网站嵌套在文件夹中,那么测试并不是一个好主意。我将要测试的应用程序放入我的本地服务器根文件夹进行测试(就像真正的网络服务器一样)并在我没有测试它时将其删除是一个非常简单的解决方案。

<nav id="main">
  <ul>
    <li><a href="/topic1/index.php">Topic1</a></li>
    <li><a href="/topic2/index.php">Topic2</a></li>
  </ul>
</nav>

答案 5 :(得分:0)

Personaly我会按照以下方式进行

的config.php

if ($_SERVER['REMOTE_ADDR'] == 'your pc ip here') {
   // Its for the local site
   $rootUrl = 'http://localhost/'; // The url needed for the local website
} else {
   // The url for the online version
   $rootUrl = 'http://mydomain.com/';
 }
 // Set the url ready
define('ROOT_URL', $rootUrl);

需要网址的文件

<?php include('config.php'); // Path to the config file ?>

<nav id="main">
  <ul>
    <li><a href="<?php echo ROOT_URLl;?>topic1/">Topic1</a></li>
    <li><a href="<?php echo ROOT_URLl;?>topic2/">Topic2</a></li>
  </ul>
</nav>