基于目录的 Apache AllowOverride

基于目录的 Apache AllowOverride

背景

  • 小团队(4 人,2 名开发人员,1 名服务器管理员,主管)
  • 三个内部应用程序,每个服务器一个。
  • httpd.conf设置为AllowOverride None开启/
  • 我们团队里没有人熟悉 Apache

我们现在需要设置旧版应用程序之外的单独页面和应用程序。我们希望这些页面和应用程序位于公共文件夹的子目录中。

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

问题

  1. 是否可以<Directory>为每个目录设置一个指令httpd.conf
  2. 上述方法是否比将.htaccess文件放在每个应用程序目录中更好
  3. 我们目前还无法运行多台服务器,那么对于我们试图完成的任务,还有其他替代方案吗?

答案1

总体来说问题比较广泛,但我将重点关注您的具体要求:

  1. 是否可以在 httpd.conf 中为每个目录设置一个指令?

对的,这是可能的。

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

它们有不同的用途。<Directory>管理上定义功能,并可以限制用户对.htaccess文件的操作。对于您的情况(紧密联系的团队),AllowOverride在开发过程中,更自由地使用可能更有意义。

一旦接近生产环境,重新审视并缩小范围就很有意义了。有一种思路是,您希望您的开发环境尽可能接近生产环境,但在您探索解决方案时,这可能会给您带来更大的灵活性。

大致如下:

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

将允许您的.htaccess文件用于各种身份验证、授权、路由重写等。

  1. 我们目前还无法运行多台服务器,那么对于我们试图完成的任务,还有其他替代方案吗?

您可以考虑将不同的应用程序容器化。每个应用程序都可以位于其自己的容器中,然后您可以启动另一个运行 Nginx 的容器,该容器将各种 URI 代理到您的不同应用程序。

相关内容