我有一个开发服务器和实时服务器,两者都在 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
添加到命令行。