【问题标题】:how to define a virtual root?如何定义虚拟根?
【发布时间】:2011-06-24 08:48:24
【问题描述】:

我的本​​地服务器的根目录是 /Users/myname/Sites 并且所有 Web 项目都位于其中的单独目录中,例如/Users/myname/Sites/newproject

我遇到的问题是我有一个网站,它的所有 html 路径都以斜杠开头,例如 <a href="/dir/file.txt"> 这使得浏览器在 /Users/myname/Sites/ 中查找文件 file.txt 而不是比在文件所在的 /Users/myname/Sites/newproject 中。

与其编辑每个文件路径以删除开头的斜杠或在开始时放入一个 php 变量,我想知道是否有一些简单的方法可以在整个站点范围内执行此操作?

我尝试过使用<base href="http://localhost/newproject" />

我尝试在 .htaccess 中设置 DocumentRoot

我尝试将 $_SERVER['DOCUMENT_ROOT'] 设置为 $_SERVER['DOCUMENT_ROOT']."/newproject";

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

【问题讨论】:

标签: php javascript html .htaccess


【解决方案1】:

您想设置一个虚拟主机(如果您使用的是 apache)来指定 / url 应该映射到 /User/myname/Sites/newproject

您可以这样做(编辑 httpd.conf 或在 conf.d 中放置一个文件):

# Listen for virtual host requests on all IP addresses, port 80
NameVirtualHost *:80

<VirtualHost *:80>
DocumentRoot /User/myname/Sites/newproject
ServerName localhost

</VirtualHost>

请注意,当您执行此操作时,您实际上是在“将文档根目录设置为您的新项目文件夹”,这将影响站点文件夹中的所有其他内容。

如果这不是您要说的,请告诉我,以便我修改答案。

【讨论】:

  • 我想知道是否有一种方法可以在 /newproject 目录中执行此操作,这样它只会影响该站点。理想情况下,我可以包含用于开发目的的一行。
  • Virtual Host Examples 我认为没有办法专门针对单个目录执行此操作,除非可能使用带有重写规则的 .htaccess 文件,但这会很麻烦,甚至那么我不确定是否可以这样做。
  • 看起来虚拟主机是要走的路。谢谢,我会设置的。
【解决方案2】:

您可以尝试设置virtual host。假设您在 Mac OS X 上的文件夹结构,试试这个:

http://mark-kirby.co.uk/2008/setting-up-virtual-hosts-on-os-x-leopard

【讨论】:

    猜你喜欢
    • 2010-12-17
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-22
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    相关资源
    最近更新 更多