2013-01-04 112 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!