如何将根目录设置为子文件夹(本地php开发环境)



我刚刚开始学习web开发,但是在设置本地开发环境时让自己有点困惑。

我在共享主机上有一个php站点有一段时间了。我会编辑本地文件并上传,然后刷新以确保一切正常。我知道这是一种顽皮的做法!

所以我试着设置一个本地开发环境,并为本地web服务器(PHP5)安装了AMPPS。我雄心勃勃地建立了下面的文件夹结构,这样我就可以编写一系列的网站来尝试不同的语言和框架,同时保持它们的独立。(方括号表示文件夹)。注意这是否是正确的方法…(?)

-->[PHP]
---> [AMPPS]
----> [www]
-----> [PROJECTS]
------> [project_name]
-------> index.php
-------> .htaccess
-------> [images]
-------> [section1]
--------> page1.php
-------> [etc...]
------> [project_name]
------> [project_name]
--> [RUBY]
--> [PYTHON]

然而,我的第一个障碍是,我所有的链接都是相对的,我当然上传了我的网站与我的主机root。我的本地开发环境中的根目录现在是www,正如你所看到的,它是从我安装我的站点的位置向上的几个文件夹。

链接(例如<a href="/section1/page1.php">Page 1</a>)现在显示为:"localhost/section1/page1.php",而我认为它们实际上应该显示为"localhost/PROJECTS/project_name/section1/page1.php"

我不认为告诉APACHE我的根目录是[project_name]是正确的方法,因为它不会为我创建的其他项目工作。我假设我应该在一个项目一个项目的基础上做一些事情来指定它自己的根目录。

我认为我可以通过在project_name文件夹中添加.htaccess文件来指定根目录:

根据我的在线调查,我认为它应该是这样的:

RewriteEngine on
RewriteRule ^/$ /PROJECTS/project_name/

或者

RewriteEngine on
RewriteRule ^/$ .;C/PHP/AMPSS/www/PROJECTS/project_name/

但是我不能让这些工作。

当网站上线时,我也在每个页面的顶部编码了<?php set_include_path($_SERVER['DOCUMENT_ROOT']); //Look for includes starting from ROOT location ?>,我认为我做的是正确的。现在我不太确定我是否正确地理解了我在那里做的事情。在我的开发环境中,它似乎没有任何影响。我还没能成功地编辑它来解决我的相对链接问题。

很抱歉写了这么久。

我很感激所有的反馈/帮助。提前感谢:)

[已解决]-下面的建议是完美的。谢谢大家。:)

Chrome用户提示:如果您使用的是自定义域,就像我对.dev所做的那样,那么要么在地址后面加上http://,要么在地址后面加上/。例如,我现在访问我的开发网站在Chrome浏览器通过访问projectname.dev/(没有最后的/它试图搜索)。

起初我以为我已经设置了VirtualHost或主机不正确,当在现实中这是Chrome的行为,这是模糊的问题。在撰写本文时,Firefox等其他浏览器并没有这种担忧。

您是正确的,为每个项目配置Apache是前进的方向。最好使用虚拟主机。为每个项目定义一个虚拟主机,并为其提供一个用于开发的域名或子域名。在我的情况下,我使用test.com进行所有本地开发,并配置project1.test.com, project2.test.com等,以便所有相对路径都能按预期工作。为此,我还编辑了我的hosts文件,以便test.com和子项目的DNS查找解析到我的本地机器。

重写url是我为每个项目保留的东西,而不是为特定的服务器设置设置全局重写。这样,我的本地开发环境就接近实际的服务器环境,并且特定于项目的重写将按预期工作。

希望有帮助

我建议使用@Tak提到的方法,但我知道预配置的WAMP包添加虚拟主机可能会有问题,所以也有一个解决方案是在html的头部部分使用BASE标签:

<base href="http://localhost/PROJECTS/project_name/">

最新更新