如何解决.htaccess 重写规则并阻止特定文件夹的文件访问
我在名为“members”的子文件夹中有一个迷你 PHP 应用程序,所以 domain.com/members
在这个迷你应用程序中,我在 .htaccess 文件中有以下内容来重定向 URL,例如 domain.com/members/categories/some-category 或 domain.com/members/login 等。
RewriteEngine On
RewriteBase /
# allow passthru to existing files/dirs
RewriteCond %{REQUEST_URI} !^/members/app [OR]
RewriteCond %{REQUEST_URI} ^/members/app/assets
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+) - [PT,L]
# everything else rewrite
RewriteRule ^(.*) members/index.PHP
这允许我的资产文件夹加载(CSS、JavaScript 和图像)并允许任何实际的文件 URL。但是,我们有一个文件夹,其中包含我们现在需要保护的文件。
因此,如果有人要访问 domain.com/members/files/filename.pdf 这将是服务器上的实际文件,我们需要将此 URL 重写到 members/index.PHP 文件中,因为我们需要检查权限在允许下载之前在文件上。
每当我尝试删除以下行时,一切都会中断:
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
解决方法
您可以在站点根目录 .htaccess 中使用此代码:
RewriteEngine On
RewriteRule ^members/index\.php$ - [L,NC]
RewriteRule ^members/files/ members/index.php [L,NC]
RewriteCond %{REQUEST_URI} !^/members/app/assets [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ members/index.php [L]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。