我刚开始学习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身份上传了我的网站。我的本地开发环境中的root现在是www
,正如您所看到的那样是我安装网站的几个文件夹。
链接(例如<a href="/section1/page1.php">Page 1</a>
)现在显示为:"localhost/section1/page1.php"
我认为它们实际上应显示为"localhost/PROJECTS/project_name/section1/page1.php"
。
我不认为告诉APACHE我的根目录是[project_name]是正确的方法,因为它不适用于我创建的其他项目。我假设我应该逐个项目地做一些事情来指定它自己的根目录。
我认为我可以通过在.htaccess
文件夹中添加project_name
文件来指定root:
从我的在线研究中我认为它会像:
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://
继续执行该地址,或使用尾随/
结束该地址。
例如,我现在通过访问projectname.dev/访问我在Chrome中的开发站点(没有最后/它尝试搜索)。
起初我以为我设置了VirtualHost或托管不正确,而实际上这是Chrome的行为,这使问题蒙上阴影。在撰写本文时,其他浏览器(如Firefox)并未分享此问题。 希望能帮助其他人。
答案 0 :(得分:3)
为每个项目配置Apache是正确的方法。最好用virtual hosts完成。为每个项目定义虚拟主机,并为其提供用于开发的域名或子域。在我的情况下,我使用test.com
进行所有本地开发并配置project1.test.com
,project2.test.com
等,以便我的所有相对路径按预期工作。为此,我还edit my hosts
file,因此test.com
和子项目的DNS查找将解析为我的本地计算机。
重写URL是我为逐个项目保留的内容,而不为特定的服务器设置设置全局重写。这样我的本地开发环境就接近实际的服务器环境,特定于项目的重写将按预期工作。
希望有所帮助
答案 1 :(得分:0)
我建议使用@Tak提到的方法,但我知道预配置的WAMP包可能存在添加虚拟主机的问题,因此还有一个解决方案可以在html的head部分使用BASE标记:
<base href="http://localhost/PROJECTS/project_name/">