2013-01-04 115 views
-1

enter code here我已经开发了一个facebook应用程序,例如在apps.facebook.com/myappname/上,它是myappname.mydomain.com上的Web应用程序主机。在htaccess重定向url遵循规则

在Facebook应用程序

只是链接基是不同的,第二部分url是相同的,例如:

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/更改基础URL。

是否可能? 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所以以这种方式开始纳入循环的我的应用程序不能正常工作。我需要为此规则添加条件,“当URL不在Facebook的iframe”有想法? TX

+0

是的,这是可能的。试试看,让我们知道它是如何发展的。 – Madbreaks

+0

这是回覆?什么意思? – Andrea

+0

让我看看我是否理解:您想将所有请求映射为'myappname.mydomain.com/whatever'到'apps.facebook.com/myappname/whatever'或者是相反的吗?无论如何,您必须有权访问所请求的URL根目录中的.htaccess文件,“是吗? –

回答

0

的RewriteCond%{HTTP_HOST}!apps.facebook.com/myappname$ [NC]

这将始终是真实的,因为请求到达服务器永远不会有HTTP_HOST集到apps.facebook.com。 (并且URL的路径组成部分不是域名的一部分...)

在这种情况下,您可以用mod_rewrite做的唯一事情就是检查HTTP Referer,我猜 - 如果它不是apps.facebook。 com,那么你的应用很可能被称为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)框架中显示,而不能在其他任何位置显示。如果你将它与J​​S方法结合起来,你可以确信,如果你的应用程序是“框架”的,它在apps.facebook.com上,而不是在其他地方。

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!