用于localhost上的开发目录的Apache站点根目录

时间:2010-05-28 05:25:23

标签: php apache .htaccess mod-rewrite

我想我错过了一些东西,并且不认为我真的理解rewriteBase是如何工作的。

我遇到的问题是我有一个生产站点,其中站点位于根目录中,但我的开发站点位于localhost子目录中。例如 http://www.sitename.com/ vs http://localhost/sitename/

如果我有一个图像文件夹,我想通过使用href中的初始斜杠来引用站点根目录中的图像。例如,使用相对href(没有初始斜杠)不是一个选项。这将在生产网站上运行,但开发网站正在寻找 http://localhost/images/imagename.jpg 而不是 http://localhost/ 网站名称 /images/imagename.jpg

所以我认为我需要做的就是在我的.htaccess文件中设置以下内容以强制网站根目录进入开发环境中的子域:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /sitename

但是仍然使用localhost作为站点根目录而不是localhost / sitename。

任何人都可以给我一些指示吗?

------------------------- EDIT --------------------- ------

我停止尝试在.htaccess文件中执行此操作并尝试使用html命令,但这也无效。

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

我真的需要一些'最佳实践'的建议,请在WAMP中建立一个可行的开发环境。

1 个答案:

答案 0 :(得分:0)

基本上,

RewriteBase告诉Apache在哪里应用RewriteRule。在这里你没有。顺便说一句,您可以完全删除RewriteBase指令,或将其更改为:

RewriteBase /

以下两行应该使其适用于您的开发环境

RewriteCond %{ REQUEST_FILENAME } !-f
RewriteRule ^(.+)$ /sitename/$1 [L,QSA]

这两个指令意味着:“如果请求的文件不存在(-f),并且仅在这种情况下,请将/sitename/前面的URL重写为请求的URI($1)”。 / p>

有关详细信息,请查看Apache mod_rewrite docsApache URL rewriting guide