我可以在 .htaccess 文件中包含基于服务器的条件语句吗?

我可以在 .htaccess 文件中包含基于服务器的条件语句吗?

我有一个开发服务器和实时服务器,两者都在 Apache 上运行我的网站。在我的 .htaccess 文件中,除了大量 mod_rewrite 命令和其他重要内容之外,我还对实时服务器进行了身份验证访问控制。 (开发服务器位于我的本地 Mac 上,所以我在那里不需要它......)

现在很难将 .htaccess 同步到实时服务器,因为我不能只复制我的 dev .htaccess 文件(这会覆盖 Auth 命令),所以我必须手动编辑实时文件。

有没有办法在 .htaccess 文件中添加条件?我正在想象这样的事情:

<On Live_Server>
  AuthName "Restricted Area"
  AuthType Basic
  AuthUserFile /home/lmiv/.htpasswds/.htpasswd 
  Require valid-user
</on>

答案1

非常接近,是的。你可以使用<IfDefine>为此阻止。它要求您使用附加-D指令启动 Apache,该参数随后可在 Apache 配置中的任何位置使用。例如,如果您-DLive_Server在生产中添加命令行选项,则可以在所有环境中的配置中执行此操作:

<IfDefine Live_Server>
  AuthName "Restricted Area"
  AuthType Basic
  AuthUserFile /home/lmiv/.htpasswds/.htpasswd 
  Require valid-user
</IfDefine>

您也可以执行相反的操作,并在您的开发环境中定义类似的内容-DDev_Server,然后反转匹配:

<IfDefine !Dev_Server>

我更喜欢后者,因为它需要较少的生产环境“特殊”配置,并且不需要您重新启动生产实例以将其-D添加到命令行。

相关内容