背景:我曾经使用环境变量来区分我的dev和生产服务器,在.htaccess中使用它: -
<IfDefine DEV_SERVER>
# dev server specific stuff here
</IfDefine>
<IfDefine !DEV_SERVER>
# production server specific stuff here
</IfDefine>
环境变量“DEV_SERVER”只在我的开发服务器上设置过,而且从未在生产中设置过。
这种方法很有效,直到我的生产服务器主机安装了Litespeed作为Apache的替代品。 Litespeed不喜欢上述内容,而忽略了一切。
我尝试为开发和生产使用不同版本的.htaccess文件,但这很麻烦且很危险,我希望能够在两者之间随时交换所有文件。
我的开发服务器运行Apache 2.4,我没有计划改变它。我读到你可以通过将它放在httpd.conf中为.htaccess指定一个不同的文件名: -
AccessFileName .htaccess.dev
那是一半 - 现在我可以有一个.htaccess.dev文件,只有我的开发服务器才会使用.htaccess。但理想情况下,我希望开发服务器: -
它确实(2)和(3),但遗憾的是没有(1)。
有什么解决方案吗?任何帮助都非常感谢,一如既往!
您可以在AccessFileName
中指定多个文件,以便执行以下操作:AccessFileName .htaccess.dev .htaccess
这将做的是如果.htaccess.dev
存在,则更喜欢.htaccess
,如果.htaccess
不存在,将使用.htaccess.dev
。
但是,在我看来,如果你必须根据每个环境自定义你的.htaccess,那你就做错了。
用工作示例更新:
如果你把AccessFileName .htaccess.dev .htaccess
放在你的Apache配置中(例如vhost,它将按预期工作):
# curl -sI http://example.com/test.html | grep "x-htaccess"
x-htaccess: dev
# mv .htaccess.dev htaccess.dev
# curl -sI http://example.com/test.html | grep "x-htaccess"
x-htaccess: default
.htaccess的内容是Header set x-htaccess default
,.htaccess.dev的内容是Header set x-htaccess dev
。