使用将在本地和服务器上工作的基本 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
- 删除 <base href>
并改为使用定义路径的 URL
常量 define('URL', 'http://website.localhost.de');
的配置文件。然后做<link href="<?= URL . 'css/stylesheet.css' ?>"
...
什么不起作用?也许根设置错了?看看这个***.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 下,所以如果您这样做<link rel="stylesheet" type="text/css" href="kinderwunschpraxis-site/assets/sf.css"/>
是否有效?我会检查生成的 url 指向每个页面的替代方法,使您的网络服务器仅指向该项目,以便它始终是根。那么你可以只使用/assets/....
,因为这将始终从根目录工作
因为您是新手(我刚开始时遇到了市长问题),如果您想更改 xampp 指向 http://localhost
的位置,您可以查看 this 帖子。您将进入C:\xampp\apache\conf\httpd.conf
或进入界面并点击配置并选择文件。您想在该文件中搜索 DocumentRoot "C:/xampp/htdocs" <Directory "C:/xampp/htdocs">
并将值更改为您的站点文件所在的位置以上是关于使用将在本地和服务器上工作的基本 href的主要内容,如果未能解决你的问题,请参考以下文章
我如何将在本地工作的 Web 服务(REST api,在 java 中)上传到主机服务器
如何使用 XAMPP 或 node.js 使 AJAX 在本地服务器上工作