![基于目录的 Apache AllowOverride](https://linux22.com/image/655772/%E5%9F%BA%E4%BA%8E%E7%9B%AE%E5%BD%95%E7%9A%84%20Apache%20AllowOverride.png)
背景
- 小团队(4 人,2 名开发人员,1 名服务器管理员,主管)
- 三个内部应用程序,每个服务器一个。
httpd.conf
设置为AllowOverride None
开启/
- 我们团队里没有人熟悉 Apache
我们现在需要设置旧版应用程序之外的单独页面和应用程序。我们希望这些页面和应用程序位于公共文件夹的子目录中。
其中一些新应用程序需要.htaccess 文件。
问题
- 是否可以
<Directory>
为每个目录设置一个指令httpd.conf
? - 上述方法是否比将
.htaccess
文件放在每个应用程序目录中更好 - 我们目前还无法运行多台服务器,那么对于我们试图完成的任务,还有其他替代方案吗?
答案1
总体来说问题比较广泛,但我将重点关注您的具体要求:
- 是否可以在 httpd.conf 中为每个目录设置一个指令?
对的,这是可能的。
- 上述方法比在每个应用程序目录中放置 .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
文件用于各种身份验证、授权、路由重写等。
- 我们目前还无法运行多台服务器,那么对于我们试图完成的任务,还有其他替代方案吗?
您可以考虑将不同的应用程序容器化。每个应用程序都可以位于其自己的容器中,然后您可以启动另一个运行 Nginx 的容器,该容器将各种 URI 代理到您的不同应用程序。