【问题标题】:How to spoof the root of links to be a subdirectory? .htaccess如何将链接的根目录欺骗为子目录? .htaccess
【发布时间】:2016-12-31 08:05:58
【问题描述】:

我在我的服务器上托管了很多网站,它们都位于 /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/

需要在“测试版”中与多个网站合作。

【问题讨论】:

    标签: php html regex .htaccess


    【解决方案1】:

    我建议您不要使用子目录,而是:

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

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

    后一个选项设置起来有点复杂,但有很多优点: - 你有一个完全独立的 HTTP 服务器,所以你甚至可以在不破坏生产环境的情况下使用它的设置 - 您在开发/登台和生产中使用完全相同的 URL - 如果您选择端口 > 1000,您甚至可以以普通用户而不是 root 用户身份运行您的 HTTP 服务器,因此您甚至可以在不使用 su/sudo 的情况下重新启动它。缺点是你不能为不同的网站使用不同的用户。

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

    请注意,您最终可能需要超过 2 个环境。开发、分期和生产都是不错的选择。

    当然,您会希望使用源代码控制(例如 git)来跟踪更改并将其反映在生产中。

    【讨论】:

    • 这听起来很棒!谢谢!我可能会尝试设置某种 git,尽管我最初认为的方法是完全不可能做到的吗?
    • 如果页面包含一个看起来像/this 的链接,没有办法让浏览器认为它应该请求/beta/this,不。但是,如果您使用上述任何一种方法,您将获得相同的实际效果。第一个真的很容易设置。如果它只适合您,您甚至可以编辑您的本地 /etc/hosts 而不是编辑 DNS。
    猜你喜欢
    • 1970-01-01
    • 2013-10-02
    • 1970-01-01
    • 2011-08-24
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多