我想我错过了一些东西,并且不认为我真的理解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中建立一个可行的开发环境。
答案 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 docs和Apache URL rewriting guide。