it-swarm.cn

Apache重写开发工作站和服务器的规则

我让开发人员在WAMP堆栈上编辑多个站点的页面,然后上传到运行LAMP堆栈的公共服务器。我们对它非常满意,但我们有这个小麻烦:我们在开发和生产环境中不能使用相同的.htaccess文件。在公共站点上,源文件夹映射到http://foo.comhttp://bar.com,依此类推。在开发人员工作站上,源文件夹映射到http://localhost/foohttp://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

7
Don Kirkby

我的解决方案并不是要重写重写规则,而是将假冒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上同步文件。

4
JasonBirch