Apache 如何将根目录设置为子文件夹(本地php开发环境)
我刚刚开始学习web开发,但在设置本地开发环境时,我有点困惑 我在共享主机上有一段时间的php站点。我会编辑本地文件并上传,然后刷新以确保一切正常。我知道这是一种顽皮的行为 因此,我尝试设置一个本地开发环境,并为本地Web服务器(PHP5)安装了AMPS。 我已经雄心勃勃地设置了下面的文件夹结构,这样我就可以编写一系列的网站来尝试不同的语言和框架,同时保持它们的独立性。(方括号表示文件夹)。请注意,如果这是正确的方法。。。(?) 然而,我遇到的第一个障碍是,我所有的链接都是相对的,当然,我已经用我的主机在根目录上传了我的网站。我的本地开发环境的根目录现在是Apache 如何将根目录设置为子文件夹(本地php开发环境),apache,relative-path,virtualhost,directory-structure,Apache,Relative Path,Virtualhost,Directory Structure,我刚刚开始学习web开发,但在设置本地开发环境时,我有点困惑 我在共享主机上有一段时间的php站点。我会编辑本地文件并上传,然后刷新以确保一切正常。我知道这是一种顽皮的行为 因此,我尝试设置一个本地开发环境,并为本地Web服务器(PHP5)安装了AMPS。 我已经雄心勃勃地设置了下面的文件夹结构,这样我就可以编写一系列的网站来尝试不同的语言和框架,同时保持它们的独立性。(方括号表示文件夹)。请注意,如果这是正确的方法。。。(?) 然而,我遇到的第一个障碍是,我所有的链接都是相对的,当然,我已经用
www
,正如您所看到的,从我安装站点的位置可以看到几个文件夹
链接(例如
)现在显示为:“localhost/section1/page1.php”
,而我认为它们实际上应该显示为“localhost/PROJECTS/project\u name/section1/page1.php”
我不认为告诉APACHE我的根目录是[project_name]是正确的方法,因为这样它就不能用于我创建的其他项目。我假设我应该逐个项目地做一些事情来指定它自己的根目录
我想我可以通过将.htaccess
文件添加到project\u name
文件夹中来指定root:
根据我的在线调查,我认为会有这样的结果:
RewriteEngine on
RewriteRule ^/$ /PROJECTS/project_name/
或许
RewriteEngine on
RewriteRule ^/$ .;C/PHP/AMPSS/www/PROJECTS/project_name/
但是我不能让这些工作
当这个网站上线时,我还在每个页面的顶部都编码了
,认为我做的是对的。
现在我不太确定我是否正确理解了我在那里做的事情。在我的开发环境中,无论是否使用它,它似乎都不会产生任何影响。我还没有能够以任何方式成功地编辑它来解决我的相对链接问题
抱歉发了这么长的邮件
我非常感谢所有的反馈/帮助。提前感谢:)
[已解决]-下面的建议非常完美。谢谢大家。:)
Chrome用户提示:
如果您使用的是自定义域,就像我对.dev所做的那样,请使用http://
继续处理该地址,或者使用一个尾随的/
结束该地址。
例如,我现在通过访问projectname.dev/(没有最后一个/it尝试搜索)在Chrome中访问我的开发人员站点
起初,我以为我错误地设置了VirtualHost或hosts,但实际上正是这种Chrome行为掩盖了问题。在撰写本文时,其他浏览器(如Firefox)并不关心这个问题。
希望这对其他人有所帮助。您认为为每个项目配置Apache是正确的。最好是用它来做。为每个项目定义一个虚拟主机,并为其指定一个域名或子域以供开发。在我的例子中,我使用
test.com
进行所有本地开发,并配置project1.test.com
、project2.test.com
等,以便我的所有相关路径按预期工作。为此,我还将test.com
和子项目的DNS查找解析到我的本地计算机
重写URL是我为一个项目一个项目保留的,而不为特定的服务器设置设置全局重写。这样,我的本地开发环境就接近于实际的服务器环境,特定于项目的重写将按预期工作
希望这有助于您正确地认识到,为每个项目配置Apache是前进的方向。最好是用它来做。为每个项目定义一个虚拟主机,并为其指定一个域名或子域以供开发。在我的例子中,我使用
test.com
进行所有本地开发,并配置project1.test.com
、project2.test.com
等,以便我的所有相关路径按预期工作。为此,我还将test.com
和子项目的DNS查找解析到我的本地计算机
重写URL是我为一个项目一个项目保留的,而不为特定的服务器设置设置全局重写。这样,我的本地开发环境就接近于实际的服务器环境,特定于项目的重写将按预期工作
希望这有帮助我建议使用@Tak提到的方法,但我知道预先配置的WAMP包可能会出现问题,无法添加虚拟主机,因此还有一个解决方案可以在html的头部分使用标记:
<base href="http://localhost/PROJECTS/project_name/">
我建议使用@Tak提到的方法,但我知道预先配置的WAMP包在添加虚拟主机时可能会出现问题,因此还有一个解决方案可以在html的头部分使用标记:
<base href="http://localhost/PROJECTS/project_name/">
您可能希望设置多个虚拟主机名。(请参见/etc/hosts
和
)您可能正在寻找设置多个虚拟主机名。(请参阅/etc/hosts
和
)感谢所有人提供您的信息。特别是Tak&Mario,因为我推荐了VirtualHost。以前从没听说过,但听起来正是我需要的。在Chrome将我的test.dev链接发送到搜索引擎(而不是像我预期的那样通过主机)后,我在Firefox中取得了一些成功。但是,在httpd.conf中有多个VirtualHost列表会导致它默认为第一个。AMPS似乎不喜欢它,并且在我恢复默认文件之前不允许Apache启动。不过我相信我能熨平皱纹。再次感谢您的大力帮助:)设置vhost时不要忘记NameVirtualHost*:80
指令。在某些堆栈(即XAMPP)上,会对其进行注释。启用它。Thx newermind!我还犯了在路径文件名中使用\而不是/的错误。