fue*_*zig 26 apache security mod-rewrite http-status-code-403 http-status-code-404
有没有办法如何配置Apache Web服务器为某些特定目录返回404(未找到)错误代码而不是403(禁止),我想禁止访问?
我找到了一些建议使用mod_rewrite的解决方案,例如
RewriteEngine On
RewriteRule ^.*$ /404 [L]
Run Code Online (Sandbox Code Playgroud)
由于发送404而不是403的目的是混淆目录结构,这个解决方案太具有启发性,因为它重定向到某个不同的位置,这使得最初访问的目录显然确实存在.
fue*_*zig 27
RedirectMatch 404 ".*\/\..*"
Run Code Online (Sandbox Code Playgroud)
诀窍,它禁止访问以点开头的所有文件或目录,给出"404 Not Found"错误.
从Apache手册:"Redirect [Match]指令通过要求客户端在新位置重新获取资源,将旧URL映射到新URL." 默认情况下,Redirect会发送302返回代码,但它也可以返回其他状态代码,如上所示.
你可以做这样的事情:
的.htaccess
ErrorDocument 403 /error/404.php
404.php
<?php
$status = $_SERVER['REDIRECT_STATUS'] = 404;
header( $_SERVER['SERVER_PROTOCOL'] . ' ' . $status);
?>
404 Error
Run Code Online (Sandbox Code Playgroud)
遇到同样的问题后,我最终得到了以下.htaccess文件
Options -Indexes
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain.com [NC]
RewriteRule ^(.*)/$ - [R=404,NC]
Run Code Online (Sandbox Code Playgroud)
第1行和第3行确保您无法列出文件夹内容,如果这样做,您将收到404错误.该的RewriteCond指令可确保该重写规则只适用于主域名.由于我有几个子域,没有重写,访问www.mydomain.com/subdomain也返回404,这不是我想要的.
归档时间: |
|
查看次数: |
38902 次 |
最近记录: |