使用PHP检查AllowOverride值?

有没有反正使用PHP来检查AllowOverride的值也看看如果.htaccess会有什么作用?

我不知道有一个干净,直接的方法来做到这一点。

如果您有要访问的文件夹的http访问权限,则可以在.htaccess文件中写入一些内容,以触发某种输出。

例如,你可以设置一个头文件(虽然这对mod_headers增加了依赖):

 <FilesMatch "\.(php)$"> <Ifmodulee mod_headers.c> Header set htaccess_works "yes" </Ifmodulee> </FilesMatch> 

然后从PHP发出请求,并检查响应头,例如使用curlCURLOPT_HEADER 。 如果它们包含htaccess_works标题,它将起作用。

另一种可怕的方法是保证独立于特定的Apache模块工作,就是以编程方式将乱码写入.htaccess文件,然后如上所述做一个curl请求,并检查一个500状态码。 如果它抛出一个500,.htaccess文件被解释。 但正如所说,这是可怕的 – 如果可能的话,去标题的方法。

补充@Pekka回应:

AllowOverride可以设置为NoneAll ,但也可以设置为特定的术语列表: AuthConfigFileInfoIndexesLimitOptions 。 所以你可以被允许使用Header指令而不是Deny。

因此,测试AllowOverride实际值的方法是将其添加到.htaccess中:

 #AuthConfig AuthName "Secret" #FileInfo ErrorDocument 404 index.php #Indexes DefaultIcon /icon/unknown.xbm #Limit Allow From All #Options Options FollowSymLinks 

然后,如果您有500条错误注释行来检测哪些单词(部分)被禁止。 你会得到一个错误500,直到你删除每一个被禁止的指令。 当您知道允许的部分时,您必须检查文档以获取允许的说明的完整列表。

如果你没有任何错误,你有AllowOverride无或全部。 然后改变拒绝/允许:

 Deny From All 

如果你有403结果,它是一个AllowOverride All。

最简单的方法

在页面的第一行添加:show-error,通过浏览器加载一个加载域,触发50x错误

另一种可怕的方法是保证独立于特定的Apache模块工作,就是以编程方式将乱码写入.htaccess文件,然后如上所述做一个curl请求,并检查一个500状态码。 如果它抛出一个500,.htaccess文件被解释。 但正如所说,这是可怕的 – 如果可能的话,去标题的方法。