Php 本地主机上开发目录的Apache站点根目录

Php 本地主机上开发目录的Apache站点根目录,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,我想我遗漏了一些东西,我不太明白重写库是如何工作的 我的问题是,我有一个生产站点,该站点位于根目录中,而我的开发站点位于localhost子目录中。乙二醇vs 例如,如果我有一个images文件夹,我想使用href中的初始斜杠引用站点根目录中的图像。例如,使用不带初始斜杠的相对href不是一个选项。这将在生产站点上起作用,但开发站点正在寻找的是sitename/images/imagename.jpg,而不是sitename/imagename.jpg 因此,我认为我所需要做的就是在.htacc

我想我遗漏了一些东西,我不太明白重写库是如何工作的

我的问题是,我有一个生产站点,该站点位于根目录中,而我的开发站点位于localhost子目录中。乙二醇vs

例如,如果我有一个images文件夹,我想使用href中的初始斜杠引用站点根目录中的图像。例如,使用不带初始斜杠的相对href不是一个选项。这将在生产站点上起作用,但开发站点正在寻找的是sitename/images/imagename.jpg,而不是sitename/imagename.jpg

因此,我认为我所需要做的就是在.htaccess文件中设置以下内容,以便在开发环境中强制将站点根目录添加到我的子域中:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /sitename
但这仍然使用localhost作为站点根,而不是localhost/sitename

谁能给我一些指点吗

-------------编辑--------------

我停止了在.htaccess文件中执行此操作,并尝试仅使用html命令,但这也不起作用

最后,我在本地服务器上用Apache设置了虚拟主机,但仅仅更改站点根目录似乎太过分了。我还担心局域网上的其他开发人员无法通过虚拟主机正确访问该站点

我真的需要一些关于在WAMP中设置一个可行的开发环境的“最佳实践”建议。

RewriteBase本身基本上告诉Apache在哪里应用RewriteRules。这里没有。顺便说一下,您可以完全删除RewriteBase指令,也可以将其更改为:

RewriteBase /
以下两行内容应使其仅适用于您的开发环境:

这两条指令的意思是:如果请求的文件不存在-f,并且只有在这种情况下,才将url prepending/sitename/重写为请求的URI$1


有关更多信息,您可以查看和。

我必须从一个具有8个站点虚拟主机的服务器对一个站点进行大量修改,因此我将该站点复制到另一个目录,并为该目录添加了一个新的虚拟主机和一个新的子域。不要认为这有点过分,在我看来,这是模拟开发服务器的最佳方式。随着时间的推移,我们已经为我们所有的web开发项目设置了虚拟主机。自从写这篇文章以来,它几乎已经成为我们的标准做法。这是一个很好的做法。为了使开发人员站点对其他人可用,通配符DNS很方便。如果您有一个名为dev01.example.com的主机,只需将*.dev01.example.com指向那里即可。然后,当您需要project foo的devsite时,只需为foo.dev01.example.com设置一个virtualhost,就可以避免接触DNS或主机文件。@timdev:+1对于wilcard DNS,它更简单,特别是当您不拥有DNS服务器时。
RewriteCond %{ REQUEST_FILENAME } !-f
RewriteRule ^(.+)$ /sitename/$1 [L,QSA]