有没有反正使用PHP来检查AllowOverride
的值也看看如果.htaccess
会有什么作用?
我不知道有一个干净,直接的方法来做到这一点。
如果您有要访问的文件夹的http访问权限,则可以在.htaccess文件中写入一些内容,以触发某种输出。
例如,你可以设置一个头文件(虽然这对mod_headers
增加了依赖):
<FilesMatch "\.(php)$"> <Ifmodulee mod_headers.c> Header set htaccess_works "yes" </Ifmodulee> </FilesMatch>
然后从PHP发出请求,并检查响应头,例如使用curl
的CURLOPT_HEADER
。 如果它们包含htaccess_works
标题,它将起作用。
另一种可怕的方法是保证独立于特定的Apache模块工作,就是以编程方式将乱码写入.htaccess
文件,然后如上所述做一个curl请求,并检查一个500
状态码。 如果它抛出一个500,.htaccess文件被解释。 但正如所说,这是可怕的 – 如果可能的话,去标题的方法。
补充@Pekka回应:
AllowOverride可以设置为None或All ,但也可以设置为特定的术语列表: AuthConfig , FileInfo , Indexes , Limit , Options 。 所以你可以被允许使用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文件被解释。 但正如所说,这是可怕的 – 如果可能的话,去标题的方法。