ndm*_*web 10 php apache .htaccess
无论如何使用PHP来检查值AllowOverride是否.htaccess会产生任何影响?
我不知道干净,直接的方式来做到这一点.
如果您对要检查此文件夹的文件夹具有http访问权限,则可以在.htaccess文件中写入一些内容,以触发某种输出.
例如,您可以设置一个标题(mod_headers虽然这有一个附加的依赖):
<FilesMatch "\.(php)$">
<IfModule mod_headers.c>
Header set htaccess_works "yes"
</IfModule>
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)
然后从PHP发出请求,并检查响应头,例如使用curl's CURLOPT_HEADER.如果它们包含htaccess_works标题,则可以.
另一种非常糟糕但保证独立于特定Apache模块工作的方法是以编程方式将乱码写入.htaccess文件,然后生成如上所述的卷曲请求,并检查500状态代码.如果它抛出500,则解释.htaccess文件.但是如上所述,这很糟糕 - 如果可能的话,请改用header方法.
作为对@Pekka 回复的补充:
AllowOverride可以设置为None或All,但也可以设置为特定的术语列表: AuthConfig、FileInfo、Indexes、Limit、Options。因此,例如,您可以被允许使用标头指令,但不能使用拒绝指令。
因此,测试AllowOverride真正值的一种方法是将其添加到您的.htaccess中:
#AuthConfig
AuthName "Secret"
#FileInfo
ErrorDocument 404 index.php
#Indexes
DefaultIcon /icon/unknown.xbm
#Limit
Allow From All
#Options
Options FollowSymLinks
Run Code Online (Sandbox Code Playgroud)
然后,如果您有 500 个错误注释行来检测哪些单词(部分)是禁止的。在删除所有禁止的指令之前,您将收到错误 500。当您知道允许的部分时,您必须检查文档以获取允许的指令的完整列表。
如果没有任何错误,则说明您有“AllowOverride None”或“All”。然后将拒绝/允许更改为:
Deny From All
Run Code Online (Sandbox Code Playgroud)
如果您得到 403 结果,则它是AllowOverride All。
| 归档时间: |
|
| 查看次数: |
11992 次 |
| 最近记录: |