我让开发人员在WAMP堆栈上编辑多个站点的页面,然后上传到运行LAMP堆栈的公共服务器。我们对它非常满意,但我们有这个小麻烦:我们在开发和生产环境中不能使用相同的.htaccess文件。在公共站点上,源文件夹映射到http://foo.com
,http://bar.com
,依此类推。在开发人员工作站上,源文件夹映射到http://localhost/foo
,http://localhost/bar
,依此类推。这意味着我需要RewriteBase /
用于公共服务器,而开发人员工作站上的每个站点都使用RewriteBase /foo/
,RewriteBase /bar/
或其他。
有没有办法指定相对于.htaccess
文件的RewriteBase?关于如何使我的重写规则更便携的任何其他想法?
如果你很好奇,我正在使用重写规则重定向到CakePHP路由代码,因此规则如下所示:
RewriteRule ^(.*)$ cake_main.php?url=$1 [QSA,L]
如果我不在开发人员工作站上使用/foo/
的RewriteBase,那么它将重写为/cake_main.php
而不是/foo/cake_main.php
。
我的解决方案并不是要重写重写规则,而是将假冒TLD的单独本地域/主机添加到我的PC。
您可以通过编辑文件C:\Windows\System32\drivers\etc\hosts
来完成此操作
请注意,在Windows 7(可能是Vista)上,为了成功编辑此文件,您需要以管理员身份运行文本编辑器。
您可以使用如下行来添加主机:
127.0.0.2 www.mysite.local
127.0.0.3 www.myothersite.local
一旦这些到位,您可以为这些域名配置Apache,您将会很高兴。
当然,这不适用于从本地网络中的其他计算机进行良好测试,但如果您处于这种情况,最好使用本地DNS服务器或将主机分配给本地非便携式IP地址和在所有PC上同步文件。