gpt4 book ai didi

apache - .htaccess 在多个环境中

转载 作者:行者123 更新时间:2023-12-03 23:32:30 26 4
gpt4 key购买 nike

我知道以前有人问过类似的问题,但我还没有找到适合我情况的任何真正具体的答案。

我有一个在多个环境(本地、开发、生产)上运行的 ExpressionEngine 站点,每个环境都需要不同的 .htaccess 规则:

所有环境

  • Remove index.php
  • 设置404文件
  • 设置 301 重定向

  • 发展
  • 使用 .htpasswd
  • 进行密码保护
  • 强制 HTTPS 协议(protocol)
  • 使用 X-Robots-Tag 防止搜索引擎索引

  • 生产
  • 强制 HTTPS 协议(protocol)
  • 将非 www 子域重定向到 www

  • 本地
  • 没有独特的规则。

  • 我已经看到了很多关于如何为每个模块设置特定环境的示例。点赞 RewriteCond %{REQUEST_HOST} ^dev.myurl.com对于 mod_rewrite 模块和 tricks like this对于 .htpasswd 要求。

    但我真正喜欢的是某种方式来设置全局环境变量,然后在每个环境的 .htaccess 文件中重新使用这些变量。以伪javascript为例,例如:
    var local = 'mysite.local';
    var development = 'dev.mysite.com';
    var production = 'www.mysite.com';

    // Global .htaccess rules

    if(environment == local){
    // Local environment .htaccess rules
    }

    if(environment == development){
    // Development environment .htaccess rules
    }

    if(environment == production){
    //Production envirotnment .htaccess rules
    }

    这样,所有特定于环境的规则都组合在一起,形成一个非常干净的文件,如果环境发生变化,只需更改一个变量。

    我已经看到一些关于更改 Apache 配置文件中的设置的引用,但如果我正在处理第 3 方主机,这显然不是一个可行的选择。

    那么这个天上掉馅饼是一厢情愿,还是可以做到呢?

    最佳答案

    乔恩的回答很好。不幸的是,并非所有网络主机都允许您控制启动 Apache 的 -D 参数。

    这是一种在开发和生产上使用单个 htaccess 文件的方法,但只有开发站点密码保护:

    # ----------------------------------------------------------------------
    # Password protect staging server
    # Use one .htaccess file across multiple environments
    # (e.g. local, dev, staging, production)
    # but only password protect a specific environment.
    # ----------------------------------------------------------------------

    SetEnvIf Host staging.domain.com passreq
    AuthType Basic
    AuthName "Password Required"
    AuthUserFile /full/path/to/.htpasswd
    Require valid-user
    Order allow,deny
    Allow from all
    Deny from env=passreq
    Satisfy any

    关于apache - .htaccess 在多个环境中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12886683/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com