如何欺骗链接的根是一个子目录?. htaccess


How to spoof the root of links to be a subdirectory? .htaccess

我在服务器上托管了不少网站,它们都位于/var/www/。它们以域名命名,例如"website.com"将位于/var/www/website.com/

我需要能够做的事情是编辑这些网站而不影响实时版本。

我的想法是使用我的服务器IP作为一种测试编辑区。假设123.123.123.123是我的服务器IP。我想能够简单地复制任何活的网站在123.123.123.123/beta/区域,并有所有的链接仍然正常工作。

不幸的是,有些链接是这样的"/assets/images/etc…",

是否有办法设置"/"是网站的目录在"beta" -例如123.123.123.123/beta/website.com/而不是在真正的"/" - 123.123.123.123/

需要与多个网站在"测试版"工作。

与其使用子目录,我建议您:

  • 使用不同的域(例如dev.example.com用于www.example.com的开发或暂存环境)。然后为每个指向站点副本的域配置虚拟主机。

  • 将您当前的web服务器(Apache等)移动到另一个端口。添加第二个web服务器,在同一个盒子上,但是另一个端口,和一个反向代理(例如磅),在常规的http/https端口上,带cookie检测发送到开发或生产环境。然后,您需要一个非常小的脚本来设置或删除所述cookie,以便从一个环境切换到另一个环境。

后一个选项设置起来有点复杂,但有很多优点:-你有一个完全独立的HTTP服务器,所以你甚至可以玩它的设置,而不会破坏生产中的任何东西-在开发/登台和生产中使用完全相同的url如果你选择的端口> 1000,你甚至可以运行你的HTTP服务器作为一个普通用户,而不是根用户,所以你甚至可以重新启动它,而不需要执行su/sudo。缺点是你不能为不同的网站使用不同的用户。

在这两种情况下,不要忘记创建数据库的副本,并将每个环境正确地指向正确的数据库。您可能希望这是自动的,以避免在开发/阶段和生产之间更改配置文件。

请注意,您最终可能需要两个以上的环境。开发、登台和生产都是不错的选择。

当然,你会希望使用源代码管理(例如git)来跟踪更改并在生产环境中反映它们。