2017-04-06 122 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中,所以我擔心,但這是錯誤的解決方案。我已經更新了相應的問題。 –