如何配置.htaccess仅在非checkAuth.php发起请求时重定向?
解决方案
要实现「所有请求重定向到checkAuth.php,但排除它通过header跳转发起的请求」,核心是给跳转请求标记唯一标识,让.htaccess能识别并放行。
1. 修改checkAuth.php的跳转逻辑
在调用header("Location: ...")之前,添加一个自定义HTTP头,标记这是认证后的跳转请求:
// 先添加自定义标识头 header("X-Auth-Redirect: 1"); // 再执行跳转 header("Location: /你要跳转的目标页面.php"); exit;
2. 配置.htaccess规则
在同目录的.htaccess中写入以下规则:
RewriteEngine On # 排除直接访问checkAuth.php的请求 RewriteCond %{REQUEST_URI} !^/checkAuth\.php$ # 排除带有认证跳转标识头的请求 RewriteCond %{HTTP:X-Auth-Redirect} !^1$ # 将其他所有请求转发到checkAuth.php RewriteRule ^(.*)$ /checkAuth.php [L]
为什么之前的Referer方案不可用?
%{HTTP_REFERER}依赖浏览器主动发送,很多隐私插件、浏览器设置会屏蔽Referer字段,导致规则失效。用自定义HTTP头的方式更稳定,不会被常规隐私策略影响。
内容的提问来源于stack exchange,提问作者Sli4o
相关产品推荐
相关产品推荐

