是否仍然使用PHP检查AllowOverride
的值,看看.htaccess
是否会产生任何影响?
答案 0 :(得分:7)
我不知道干净,直接的方法。
如果您对要检查的文件夹有http访问权限,则可以在.htaccess文件中写入一些内容,以触发某种输出。
例如,你可以设置一个标题(虽然这对mod_headers
有依赖性):
<FilesMatch "\.(php)$">
<IfModule mod_headers.c>
Header set htaccess_works "yes"
</IfModule>
</FilesMatch>
然后从PHP发出请求,并检查响应标头,例如使用curl
的CURLOPT_HEADER
。如果它们包含htaccess_works
标题,则可以正常工作。
另一种可怕但保证独立于特定Apache模块工作的方法是以编程方式将乱码写入.htaccess
文件,然后生成如上所述的卷曲请求,并检查500
状态代码。如果它抛出500,则解释.htaccess文件。但是如上所述,这很糟糕 - 如果可能的话,请改用header方法。
答案 1 :(得分:3)
补充@Pekka回复:
AllowOverride可以设置为无或全部,但也可以设置为特定的术语列表: AuthConfig , FileInfo ,索引,限制,选项。因此,您可以被允许使用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。如果您知道允许的部分,则必须查看documentation以获取完整的允许说明列表。
如果您没有任何错误,您可以使用AllowOverride None或All。然后将拒绝/允许更改为:
Deny From All
如果你有403结果,那就是AllowOverride All。
答案 2 :(得分:1)
最简单的方式
添加:在页面的第一行显示错误,通过浏览器加载域以触发50x错误
另一种方法虽然糟糕但可以保证独立工作 从特定的Apache模块是以编程方式编写乱码 进入.htaccess文件,然后像上面那样发出一个卷曲请求 检查500状态代码。如果它抛出500,.htaccess文件 得到解释。但正如所说的那样,这很糟糕 - 如果可能的话,那就去吧 而不是header方法。