背景:我曾经使用环境变量来区分开发和生产服务器,在.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)。
有什么解决办法吗?一如既往地感谢任何帮助!
答案 0 :(得分:0)
您可以在AccessFileName
中指定多个文件,因此可以执行以下操作:AccessFileName .htaccess.dev .htaccess
与.htaccess.dev
相比,此方法更喜欢.htaccess
,如果.htaccess
不存在,则使用.htaccess.dev
。
但是,在我看来,如果您必须根据环境自定义.htaccess,则您做错了事:)
使用工作示例进行更新:
如果将AccessFileName .htaccess.dev .htaccess
放入Apache配置中(如虚拟主机一样,它将正常工作):
# 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
。