如果存在,请使用.htaccess文件的替代文件?

问题描述 投票:0回答:1

背景:我曾经使用环境变量来区分我的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。但理想情况下,我希望开发服务器: -

  1. 使用.htaccess,如果那就是全部
  2. 使用.htaccess.dev,如果那就是全部
  3. 如果.htaccess和.htaccess.dev都存在,请使用.htaccess.dev

它确实(2)和(3),但遗憾的是没有(1)。

有什么解决方案吗?任何帮助都非常感谢,一如既往!

apache .htaccess filenames httpd.conf
1个回答
0
投票

您可以在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

© www.soinside.com 2019 - 2024. All rights reserved.