【问题标题】:How to make local server treats a subfolder as the root folder? [duplicate]如何使本地服务器将子文件夹视为根文件夹? [复制]
【发布时间】:2017-08-25 10:45:31
【问题描述】:

当我在本地服务器上开发自己的网站时,我将其文件放在子文件夹中。例如,本地 url 看起来像这样:

http://127.0.0.1/projects/myownwebsite/

在我将其文件上传到网络托管公司的服务器后,它们将位于根文件夹中。所以远程 url 看起来像这样:

http://www.myownwebsite.com/

问题是,我想在所有页面和文件的引用中使用绝对路径。例如:

<link rel="stylesheet" href="/css/style.css">
<script src="/js/main.js"></script>
<a href="/about-us/">About Us</a>
<img src="/images/logo.png" alt="My Website">

这些绝对路径在远程服务器上完美运行。但不是在我的本地服务器上,因为在我的本地服务器上,/about-us/ 之类的引用链接到 http://127.0.0.1/about-us/,它找不到任何页面。

我想让绝对路径也可以在我的本地服务器上运行,这样我就可以更轻松地开发自己的网站。但是我不能简单地将所有文件放在本地服务器的根文件夹中,因为还有其他项目的文件和文件夹。

是否可以让本地服务器将一个子文件夹(这里是我自己网站的文件夹)作为根文件夹?

附:我用于本地服务器的软件是EasyPHP

【问题讨论】:

  • 您是否有理由只想使用绝对路径?顺便说一句,在 php 中使用根路径常量(如在框架中所做的那样)构造您的 url 始终是一个好习惯。这样,您只需在配置中更改此常量..
  • @Kaddath 因为绝对路径似乎使事情变得更容易并导致更少的问题。而PHP解析时间也是一个原因。如果我需要构建数百条路径,那会延迟响应时间并使我的 PHP 代码变得混乱。
  • 这样做并不是为了反驳,但我总是喜欢自己检查。为 1000 个 url 生成做了一个基准测试。变量赋值的最大差异时间为 2 毫秒,有利于没有常量(绝对值)的路径。相当无意义。但更多的是,当我使用echo 执行此操作时,最大差异为 40 毫秒,有利于相对路径(相对路径更短,在我的情况下只有 2 个字符的长度差异)。相对路径更快,因为显示时间更短。顺便说一句,相对路径从来没有“问题”
  • @Kaddath 感谢您提供统计数据。我会考虑到这一点。

标签: php absolute-path


【解决方案1】:

您需要更改 VirtualHost 和 conf_files\httpd.conf file.

<VirtualHost 127.0.0.1>
DocumentRoot "${path}/data/localweb/public_html"
ServerName 127.0.0.1
<Directory "${path}/data/localweb/public_html">
    Options FollowSymLinks Indexes
    AllowOverride All
    Order deny,allow
    Allow from 127.0.0.1
    Deny from all
    Require all granted
</Directory>

在 Windows 上:configuration-&gt;Apache. (opens httpd.conf)

DocumentRoot "D:/proot"
(...)
# DocumentRootDirectory 
<Directory "D:\proot">
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
 </Directory>
 (...)
 NameVirtualHost 127.0.0.1
 <VirtualHost 127.0.0.1>
   DocumentRoot "D:/proot/"
   ServerName localhost
 </VirtualHost>`

替换D:/proot/ with your path.

【讨论】:

  • 嗨。谢谢您的帮助。但是右键单击 EasyPHP 图标后我找不到Configuration。我使用的版本是 Devserver 17.0。
  • 如果它对你有帮助,请检查一下
  • 谢谢。这有帮助。我所做的是,在httpd.conf 中,我让它监听了一个端口并添加了一个新的VurtualHost,它使用了这个新端口和子文件夹,现在它可以工作了。
猜你喜欢
  • 1970-01-01
  • 2016-09-13
  • 1970-01-01
  • 2016-06-30
  • 2011-02-21
  • 1970-01-01
  • 2014-07-11
  • 1970-01-01
  • 2019-10-19
相关资源
最近更新 更多