2017-04-06 117 views
0

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

Wordpress和webmail客户端安装在同一个目录下。的webmail客户端可以访问通过两个网址:(在其中安装的目录)

  • www.server.com/webmail

  • www.server.com/wp-admin/admin.php?page=webmail-plugin

    (A WordPress插件,显示的webmail客户端在wordpress管理器内的iframe中。)

现在我希望只能通过url www.server.com/wp-admin/admin.php?page=webmail-plugin访问webmail客户端,并阻止任何直接访问(从用户)到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和web邮件客户端在同一主机上运行。当wordpress显示webmail客户端时,它也从www.server.com/webmail加载它。因此,简单地重定向到www.server.com/webmailwww.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后端,等等....

可以递归问题可以通过固定的.htaccess?如果没有,你还有什么其他选择?

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

回答

0
RewriteEngine On 

RewriteCond %{HTTP_HOST} ^mail.server.com [NC] 
RewriteRule ^(.*) http://server.com/wp-admin/admin.php?page=webmail-plugin [L,R] 
+0

谢谢你的建议。简单地从webmail文件夹重定向到wordpress会导致递归。我已经更新了相应的问题。 –

0

那么你可以在你的web客户端上使用Javascript来检查它是否从iframe中被调用。如果它没有从iframe中调用,那么用户可以被重定向到wordpress登录页面。

+0

谢谢你分享这个。这是个好主意。但是,webmail客户端不应该暴露在外部wordpress中,所以我担心,但这是错误的解决方案。我已经更新了相应的问题。 –