基于目录的Apache AllowOverride

背景

  • 小团队(4人,2个开发人员,1个服务器pipe理员,主任)
  • 三个内部应用,每个服务器一个。
  • httpd.conf设置为AllowOverride None on /
  • 我们的团队成员都不习惯Apache

我们已经到了需要在遗留应用程序外部设置单独的页面和应用程序的地步。 我们希望这些驻留在公用文件夹的子目录中。

其中一些新的应用程序需要.htaccess文件。

问题

  1. httpd.conf每个目录是否可以有一个<Directory>指令?
  2. 上述情况比将.htaccess文件放在每个应用程序目录中更好
  3. 我们现在还不能做多个服务器,那么还有别的办法可以替代我们正在试图完成的任务吗?

总的问题相当广泛,但我会专注于您的具体问题:

  1. 是否有可能在httpd.conf中的每个目录有一个指令?

对的,这是可能的。

  1. 上述情况比在每个应用程序目录中放置.htaccess文件好吗?

他们服务不同的目的。 <Directory>pipe理方式定义function,并可以限制用户可以使用.htaccess文件进行的操作。 对于你的情况(紧密的团队),在开发过程中,在AllowOverride使用情况下可能更为自由。

一旦你接近生产,重新审视和收紧这一点是有道理的。 有一种思路,你希望你的开发环境尽可能接近生产,但是当你在探索你的解决scheme时,这可能会给你更多的灵活性。

有些东西是:

 <Directory /path/to/application> [AllowOverride all](https://httpd.apache.org/docs/2.2/mod/core.html#allowoverride) # Custom Options, etc. </Directory> 

将允许您的.htaccess文件用于各种身份validation,授权,路由重写等

  1. 我们现在还不能做多个服务器,那么还有别的办法可以替代我们正在试图完成的任务吗?

你可以看看容器不同的应用程序。 每个应用程序都可以存放在自己的容器中,然后你可以站起来运行Nginx的另一个容器,它将不同的URI代理到不同的应用程序中。