Apache:在webdav中禁用*parsinghtaccess

我有以下目录布局:

/var/www/ example.com/ logs/ html/ stuff/ 

Apacheconfiguration通常从/var/www/example.com/html

我已经configurationwebdav工作的urlhttps://example.com/server-admin并允许访问其他目录:

 <VirtualHost> ... Alias /server-admin /var/www/example.com/ <Location /server-admin > Dav on AllowOverride None ... 

使用AllowOverride None我想禁用htaccess文件,以便他们不会中断webdav操作。

这种作品。 但是 :如果我上传一个语法错误的htaccess文件,一切都会崩溃,500内部服务器错误。 我猜即使这样的文件没有被使用,Apache仍然parsing它。

所以我尝试使用AccessFilename .davaccess来更改它,使其他名称,哪种工作,但不是在<Location>而是全局在<VirtualHost>

那么该怎么办? 如何禁用<Location> htaccess,或者如何更改布局才能使其工作?

您将需要使用<Directory>容器而不是<Location>容器来应用AllowOverride指令。 虽然AllowOverride指令具有“目录”上下文(意味着它通常在<Location><Directory>容器等中都是允许的),但是还有一个特定的限制 :

AllowOverride指令只能在<Directory>部分中使用。

这似乎是合理的,因为.htaccess文件适用于物理目录,而不是严格的URL(尽pipeURL通常映射到物理目录)。 ( <Directory>容器在请求中的处理也要早得多, <Location>容器处理得比较晚)。

顺便提一句,你还需要在Apache 2.4上设置AllowOverrideList None来完全禁用.htaccess文件。 根据AllowOverride文档 :

当此指令设置为None且AllowOverrideList设置为None时, .htaccess文件将被完全忽略 。 在这种情况下, 服务器甚至不会尝试读取文件系统中的.htaccess文件

目前我没有看到.htaccess (每个目录的configuration文件)如何有条件地启用文件系统的一个区域(在单个虚拟主机下)。 他们要么启用或不启用。

参考:

  • AllowOverride指令
  • 什么指令是允许的?

更新:对此的解决scheme/解决方法是可能有一个完全独立的VirtualHost(也许是相同的主机 ,但不同的端口 ?)只是指向文件系统的相同区域的WebDAV,其中.htaccess完全禁用。 但是,点文件(主要是.htaccess.htpasswd )也是默认保护的,所以如果需要读取访问权限,您需要重写。