【发布时间】:2025-12-21 12:05:11
【问题描述】:
设置如下:
Wordpress 和 webmail 客户端安装在同一目录中。可通过两个 URL 访问 webmail 客户端:
-
www.server.com/webmail(它的安装目录。)
-
www.server.com/wp-admin/admin.php?page=webmail-plugin(一个 wordpress 插件,在 iframe 中显示 webmail 客户端 在 wordpress 管理中。)
现在我想让 webmail 客户端只能通过 URL www.server.com/wp-admin/admin.php?page=webmail-plugin 访问,并阻止(来自用户)对 www.server.com/webmail 的任何直接访问。
换句话说:如果用户尝试通过www.server.com/webmail 访问网络邮件客户端,它应该被重定向到www.server.com/wp-admin/admin.php?page=webmail-plugin(这会强制用户先登录)。但是,wordpress 插件仍然必须访问 www.server.com/webmail 才能在 iframe 中显示 webmail 客户端。
这可以通过 .htaccess 进行配置吗?如果有,怎么做?
一点背景资料: 出于安全原因,我想这样做:Wordpress 受到各种方式的保护,但 webmail 客户端仅支持基本身份验证,防止 webmail 客户端出现任何问题的最简单方法是将其隐藏在 wordpress 后面 - 即没有它从外部 wordpress 暴露的界面(尤其不是登录页面)。
编辑:为什么从/webmail 到/wp-admin 的简单重定向不起作用:
困难在于 wordpress 和 webmail 客户端运行在同一台主机上。当 wordpress 显示 webmail 客户端时,它也会从www.server.com/webmail 加载它。因此,简单地将www.server.com/webmail 重定向到www.server.com/wp-admin/admin.php?page=webmail-plugin 会导致递归:
- 当 webmail 界面应该显示在 iframe 中时,wordpress 会尝试加载
www.server.com/webmail。 - 但是请求被重定向回
www.server.com/wp-admin/admin.php?page=webmail-plugin,导致整个 wordpress 后端显示(嵌套)在 iframe 中。 - 嵌套 wordpress 后端再次尝试显示 webmail 客户端 (1.),该客户端再次被重定向到 wordpress 后端,依此类推....
能否通过 .htaccess 修复递归问题?如果没有,您还有什么建议?
非常感谢您的建议。谢谢!
【问题讨论】:
标签: wordpress .htaccess security