enter code here
我在apps.facebook.com/myappname/上开发了一个facebook应用程序,它是myappname.mydomain.com上的一个Web应用程序主机。
myappname.mydomain.com/home apps.facebook.com/myappname/home
myappname.mydomain.com/product apps.facebook.com/myappname/product
我想只显示facebook网址,而不是真正的网址因此我需要在htaccess中创建规则重定向。我的意思是一个规则,它只是将基本网址从apps.facebook.com/myappname/更改为myappname.mydomain.com /
可能吗? tx,最好的问候
等待帮助我正在研究解决方案,也许这只是其中之一。在htaccess中我添加了这段代码
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !apps.facebook.com/myappname$ [NC]
RewriteRule ^(.*)$ https://apps.facebook.com/myappname/$1 [L,R=301]
但是你知道facebook应用程序就像一个iframe,所以以这种方式启动一个包含的循环我的应用程序不起作用。我需要添加条件这个规则,“当网址不在Facebook iframe”有想法? TX
答案 0 :(得分:0)
RewriteCond%{HTTP_HOST}!apps.facebook.com/myappname$ [NC]
这将永远为真,因为到达您的服务器的请求永远不会将HTTP_HOST设置为apps.facebook.com。 (并且URL的路径组件不是域名的一部分......)
在这种情况下你唯一可以用mod_rewrite做的就是检查HTTP Referer,我猜 - 如果它不是apps.facebook.com,那么你的app很可能在FB iframe之外被调用。 (但是,引用者有多不可靠,现在应该是常识。)
您最好的选择是使用JavaScript来检查您的应用是在iframe中调用还是自己调用(如果它位于iframe中,则假设它位于apps.facebook.com上。)
if(top == window) {
// not in iframe, redirect:
window.location.href = "{your app’s URL on facebook}";
}
只有当您的应用程序直接在顶级浏览器窗口中调用时才会触发 - 如果它被框起来,无论是否在facebook.com上,此代码都将无效。
您可以在服务器配置中添加X-Frame-Options
标头,这样您的应用只会被允许显示在apps.facebook.com上的(i)框架中,而不是其他任何地方。如果你将它与JS方法结合起来,你可以非常肯定,如果你的应用程序被“框架化”,它就在apps.facebook.com而不是其他地方。
答案 1 :(得分:0)
经过两个工作日我理解了这一点,tx为你的回复,这是我的javascript解决方案
<script>
if (parent.location.href == self.location.href) {
window.location.href = 'https://apps.facebook.com/myappname' + window.location.pathname;
//alert(window.location.pathname);
}
</script>
PS。 tx到MAX !!!