以下是设置:
Wordpress和webmail客户端安装在同一目录中。可以通过两个URL访问Webmail客户端:
www.server.com/webmail
(安装它的目录。)
www.server.com/wp-admin/admin.php?page=webmail-plugin
(一个wordpress插件,在wordpress管理中显示iframe中的webmail客户端。)
现在,我希望只能通过网址www.server.com/wp-admin/admin.php?page=webmail-plugin
访问网络邮件客户端,并阻止任何直接访问(从用户)到www.server.com/webmail
。
换句话说:如果用户尝试通过www.server.com/webmail
访问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
就会导致递归:
www.server.com/webmail
。www.server.com/wp-admin/admin.php?page=webmail-plugin
,会导致整个wordpress后端在iframe 中显示(嵌套)。可以通过.htaccess修复递归问题吗?如果没有,您建议还有哪些其他选择?
非常感谢您的建议。谢谢!
答案 0 :(得分:0)
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mail.server.com [NC]
RewriteRule ^(.*) http://server.com/wp-admin/admin.php?page=webmail-plugin [L,R]
答案 1 :(得分:0)
您可以在Web客户端上使用Javascript来检查是否从iframe内部调用它。如果没有从iframe调用它,则可以将用户重定向到wordpress登录页面。