php - 适用于本地 (MAMP) 和实时服务器的绝对 URL

标签 php html url relative-path absolute-path

尝试找出一种方法,使我可以在本地计算机上开发我的网站版本,然后将文件上传到实时站点。问题是,我希望本地站点完全依赖于它自己,对于 css 链接,包含等需要链接到本地​​文件夹。

我使用一个名为 init.php 的文件,该文件位于 Web 文件夹的根目录中,每个页面都包含该文件。在此初始化中,我包含了所有样式表、jquery 和其他包含项。

如果我的网站上没有任何子文件夹,我会简单地使用包含在每个页面上的这个 init.php,然后简单地做,例如css/main.css 和 include 'includes/header.php' 等

问题是我的网站中有文件夹,但仍然希望只使用根目录中的一个 init.php 文件。但是,我需要包含此文件并链接到也在同一位置的 css 文件等。

文件夹结构为:

root
    init.php
    databaseconn.php
    /css/
        main.css
    /settings/
        user_profile.php

如果我在 user_profile.php 页面中包含 init.php 文件,则指向其他文件的链接将不起作用。目前我通过表示双句号 (../) 将 init.php 包含到 user_profile.php 页面上

问题是,无论我在哪个文件夹中,我如何才能始终使 init.php 文件中链接的文件始终链接到相同的正确位置,同时在将网站文件移动到我的实时文件时不受影响主持人?

我已经尝试过 DIR 和文档根目录等,但是当按如下方式使用时:

<?php define( 'BASE_PATH', __DIR__.'/' ); ?>
<link rel="stylesheet" type="text/css" href="<?php echo BASE_PATH; ?>css/main.css">

这(在 MAMP 上)给了我这个 URL:

/Applications/MAMP/htdocs/website/css/main.css

这当然行不通。

我怎样才能正确地做到这一点?我不想强制使用 http: 部分 niether 以防我将来获得 SLL。

任何帮助都会很棒!

最佳答案

您可以为此使用基本 href 标签。

示例代码:

<?php
  $baseHref = ($isDevelopment ? '//localhost/site/' : '//www.site.com/');
?>
<html>
  <head>
    <base href="<?php echo $baseHref; ?>" />
    <link rel="stylesheet" type="text/css" href="css/main.css" />
  </head>

编辑:当然你必须在你的配置/初始化的某个地方定义你是在开发服务器还是生产服务器。

关于php - 适用于本地 (MAMP) 和实时服务器的绝对 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24737117/

相关文章:

php - 如何将带有HTML实体和无效字符的文本转换为其等效的UTF-8?

php - 使用 php 中的管理面板从 mysql 数据库中的 Web 应用程序创建数据库

html - 在浏览器中设计时如何调整文本的渐变?

javascript - 尝试使 IRC 机器人的 URL-Matching RegEx 更快

html - 在后台HTML网页中播放远程音频

php - Google Drive API - 未接收推送通知(基本身份验证)

PHP代码不创建数据库

javascript - 单击时打开 Div,再次单击时保持打开状态

jquery - 如何在 JQuery connectedSortable 容器之间定位图像

html - 针对相同目录和子目录文件的相对 URL 是否以点和斜杠开头?