使用将在本地和服务器上工作的基本 href

Posted

技术标签:

【中文标题】使用将在本地和服务器上工作的基本 href【英文标题】:Using a base href that will work locally and on server 【发布时间】:2019-07-01 12:59:03 【问题描述】:

继question 之后,我昨天问我最终找到了解决方案,我现在遇到了另一个我一直试图解决但没有运气的问题。

我正在使用 XAMPP 测试 php 文件,为了让 header.php 中的样式表在任何地方都能工作,我在 header.php 文件中使用了以下行。

<base href="http://localhost/folder-name-here/">

当我在本地进行测试时,它可以工作,但是,我正在为其他人进行网站清理作为练习(我是初学者)并且我已经假设如果该网站是推送到服务器 - 与我一起工作的人也问我为什么不使用与根相关的东西。

我在网上看到了各种建议,比如使用:

<base href="~/>

<base href="/">

但不幸的是,这些都不起作用。

目前还不确定我还能尝试什么。有任何想法吗?

【问题讨论】:

正如您已标记 php - 删除 &lt;base href&gt; 并改为使用定义路径的 URL 常量 define('URL', 'http://website.localhost.de'); 的配置文件。然后做&lt;link href="&lt;?= URL . 'css/stylesheet.css' ?&gt;" ... 什么不起作用?也许根设置错了?看看这个***.com/questions/7229783/… 检查您的文档根目录和文件所在的位置。如果文件在文档根目录内,那么 / 应该可以工作。如果可能的话,分享您的项目和文档根目录的文件夹结构 @GyaneshwarPardhi 我的 header.php 和 index.php 在同一个主文件夹中 - css 在 /assets 中 - 我基本上希望我的 header.php 能够工作,无论我是否在索引上使用它。 php 或类似 /the-team/folder/about-us.php 好的,如果你在 index.php 中添加 header.php,路径将是 heaerd.php 但如果你添加到 /the-team/folder/ 中的 about-us.php about-us.php 然后路径会有所不同,应该是 ../header.php 【参考方案1】:

我将使用$_SERVER['HTTP_HOST'] 代替基本标记,这将返回来自您网站 (localhost) 或在线时网站 (example.com) 的基本 URL。 我从您之前的帖子中选择了链接并对其进行了修改。

<link rel="stylesheet" type="text/css" href="<?php echo $_SERVER['HTTP_HOST']; ?>/assets/sf.css"/>

当然,如果这不是你喜欢的那样工作,你也可以为它创建一个你修改的 php 变量

<?php
$baseUrl = 'localhost/folder';
$baseUrl = $_SERVER['HTTP_HOST'].'folder';
?>

<link rel="stylesheet" type="text/css" href="<?php echo baseUrl; ?>/assets/sf.css"/>

这样,当您部署到网络服务器时,一次调整所有链接很容易

编辑: 因为当讨论聊天室关闭时,这是一种可行的解决方案,

<link rel="stylesheet" type="text/css" href="//<?php echo $_SERVER['HTTP_HOST']; ?>/kinderwunschpraxis_site/assets/sf.css"/>

【讨论】:

感谢您的意见!我已经尝试了这两个建议并且都破坏了 css :( au.. 完全可以。你如何设置网络服务器?文件结构如何?您遇到的是 404 错误还是其他原因? 来自本地服务器,它基本上是:localserver/kinderwunschpraxis-site/index.php header.php footer.php sidebar.php etc. assets/sf.css scal.css etc. ueber-uns/ index. php das-team/ sample.php 有很多不同的文件夹和子文件夹,我不想在所有不同的文件夹中有不同的 header.php 文件或复制 css,因为本网站的菜单/页脚是总是一样。没有 404 错误或类似的错误,我只是将代码包含在 header.php 文件中并删除了基本标记和 css 在 index.php 中停止工作 如果您使用样式标签,如果找不到,它应该在您的控制台(在网络浏览器上)中给出 404 错误。无论您去网站的哪个位置,css 文件都应始终位于 localserver/kinderwunschpraxis-site/assets/sf.css 下,所以如果您这样做 &lt;link rel="stylesheet" type="text/css" href="kinderwunschpraxis-site/assets/sf.css"/&gt; 是否有效?我会检查生成的 url 指向每个页面的替代方法,使您的网络服务器仅指向该项目,以便它始终是根。那么你可以只使用/assets/....,因为这将始终从根目录工作 因为您是新手(我刚开始时遇到了市长问题),如果您想更改 xampp 指向 http://localhost 的位置,您可以查看 this 帖子。您将进入C:\xampp\apache\conf\httpd.conf 或进入界面并点击配置并选择文件。您想在该文件中搜索 DocumentRoot "C:/xampp/htdocs" &lt;Directory "C:/xampp/htdocs"&gt; 并将值更改为您的站点文件所在的位置

以上是关于使用将在本地和服务器上工作的基本 href的主要内容,如果未能解决你的问题,请参考以下文章

我如何将在本地工作的 Web 服务(REST api,在 java 中)上传到主机服务器

如何使用 XAMPP 或 node.js 使 AJAX 在本地服务器上工作

Minikube 将在 localhost 上运行的 MySQL 公开为服务

使用 nginx 和 docker 测试本地子域

swf 文件在本地主机上工作但在服务器上不工作

在heroku python应用程序上使用什么端口