如何设置WordPress页面仅允许从指定URL访问
用.htaccess实现指定来源访问限制(适配WordPress/Elementor)
核心思路
通过校验HTTP请求头的Referer字段,判断访客是否从指定页面跳转而来,不符合条件则直接重定向到目标页面。
具体.htaccess代码
把这段代码放在WordPress默认规则(# BEGIN WordPress标记)之前——因为.htaccess规则按顺序执行,放在前面才能优先生效:
# 限制/secret-page仅允许从/go-to-secret跳转访问 RewriteEngine On # 排除WordPress后台和Elementor编辑器(避免编辑页面时被拦截) RewriteCond %{REQUEST_URI} !^/wp-admin/?$ [NC] RewriteCond %{REQUEST_URI} !^/wp-content/plugins/elementor/?$ [NC] # 检查来源不是指定跳转页,且当前访问的是秘密页面 RewriteCond %{HTTP_REFERER} !^https://website.com/go-to-secret/?$ [NC] RewriteCond %{REQUEST_URI} ^/secret-page/?$ [NC] # 不符合条件则重定向到/redirect RewriteRule ^ /redirect [R=302,L]
代码说明
RewriteEngine On:确保URL重写功能开启(WordPress通常已开启,重复添加无影响)- 前两个
RewriteCond:排除后台和Elementor插件路径,避免管理员编辑页面时被拦截 %{HTTP_REFERER} !^https://website.com/go-to-secret/?$:匹配来源不是指定跳转页的请求,!表示否定,[NC]不区分大小写,末尾/?兼容带/不带斜杠的访问%{REQUEST_URI} ^/secret-page/?$:匹配当前访问的是秘密页面RewriteRule ^ /redirect [R=302,L]:触发重定向,R=302是临时重定向(测试阶段用这个,确认没问题后可改成R=301永久重定向),L表示停止执行后续规则
注意事项
- Referer字段的局限性:部分浏览器、隐私插件会屏蔽
Referer头,导致规则失效。如果需要更可靠的验证,可以结合Cookie机制:在/go-to-secret页面加一段PHP代码设置Cookie,再在.htaccess里检查Cookie是否存在(适合有一定技术基础的用户)。 - 缓存问题:测试时建议用浏览器隐私模式,避免旧缓存干扰结果。
- 规则顺序问题:必须把这段代码放在
# BEGIN WordPress之前,否则会被WordPress自带的重写规则覆盖。
内容的提问来源于stack exchange,提问作者Ruan
相关产品推荐
相关产品推荐

