2012-03-26 124 views
2

我有一個Facebook應用程序,它可以在Facebook或直接在域上工作。Facebook應用程序:阻止從域名直接訪問

但我不想要它。

www.mydomain.com/myapp //這不應該工作。

你應該去:

apps.facebook.com/myapp

抱歉不好英語。

任何人都可以幫助我,我會很高興。

+0

[預防臉書畫布應用程序被直接/在Facebook之外訪問]的可能重複(http://stackoverflow.com/questions/6295741/prevent-facebook-canvas-app-from-being-accessed-directly-outside -of-facebook) – ceejayoz 2012-03-26 21:24:00

回答

1

根據URL進行重定向到您想要用戶去:

if ($_SERVER["SERVER_NAME"] != "apps.facebook.com") 
{ 
header('Location: http://apps.facebook.com/myapp'); 
} 

如果你只希望您的domain.com apps.facebook.com

if ($_SERVER["SERVER_NAME"] != "apps.facebook.com" && $_SERVER["SERVER_NAME"] != "mydomain.com") 
{ 
header('Location: http://apps.facebook.com/myapp'); 
} 

或通過該文件夾中的.htaccess把

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^www.mydomain.com$[OR] 
RewriteCond %{HTTP_HOST} ^mydomain.com$ 
RewriteRule ^(.*)$ http://apps.facebook.com/myapp/$1 [R=301,L] 

或者乾脆在你的PHP頁面

的頂部
if ($_SERVER["SERVER_NAME"] != "apps.facebook.com") 
{ 
echo "Error please visit my apps via facebook"; 
return 
} 
+0

ı當用戶訪問myapp/x.php時,會有更多頁面像http://apps.facebook.com/myapp/x,y,z.php會發生什麼? – bayburt 2012-03-26 21:09:59

+0

也許這樣更好? – exomic 2012-03-26 21:14:36

+0

如果有人訪問mydomain.com/myapp,我不希望他訪問應用程序。重定向或顯示錯誤,如(你需要首先去Facebook)如何做到這一點。 – bayburt 2012-03-26 21:16:26

0

由於Same-Origin Policy因爲Same-Origin Policy,所以不會有檢查apps.facebook.com框架的好方法。我建議你只是要檢測的途徑,如果你是在一個框架都在JavaScript這樣的:

if(window == window.top) window.top.location='http://apps.facebook.com/whatever/';

它不會阻止別人從你iframing但至少你的域名將您重定向到Facebook頁面。