htaccess:如何防止递归重定向?

时间:2017-04-06 11:22:57

标签: wordpress .htaccess security

以下是设置:

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就会导致递归:

  1. 当网页邮件界面显示在 iframe 中时,wordpress会尝试加载www.server.com/webmail
  2. 但请求会被重定向回www.server.com/wp-admin/admin.php?page=webmail-plugin会导致整个wordpress后端在iframe 中显示(嵌套)。
  3. 嵌套 wordpress后端再次尝试显示webmail客户端(1.),它再次被重定向到wordpress后端,依此类推......
  4. 可以通过.htaccess修复递归问题吗?如果没有,您建议还有哪些其他选择?

    非常感谢您的建议。谢谢!

2 个答案:

答案 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登录页面。