2017-02-22 111 views
1

我現在有種奇怪的情況。基本上,我的公司目前正在將門戶網站的軟件最新版本鏈接到後臺,但是一旦用戶登錄,他們就可以將鏈接分發到構建版本。 30天免費試用,下落不明。PHP - 只允許從一個域訪問

所以我想阻止訪問整個網址/downloads/file.extension,甚至只是/downloads/,除非引用網址是allowed_domain.com

我會使用.htaccess,但託管服務提供商(WP發動機),我們使用了自己的服務器上建立Nginx的。不僅如此,我還需要將我的Nginx代碼發送給WP Engine,以供他們爲我實現,這是不切實際的。

因此,我要尋找一個PHP唯一的解決辦法,或WordPress插件,我顯然沒有注意到。

是的,我知道這是我公司存儲重要文件的一種非常愚蠢的方式,但我現在需要解決這個問題,直到他們想出更好的方法。

+0

是的,我知道我應該在'public_html'之外託管這些類型的文件,並利用PHP發送它們,但是WP引擎不允許我訪問真正的根目錄。 – Jesse

+0

我相信Wordpress只會重寫不存在的文件的URI。因此,如果這些文件存在於公共目錄中,我認爲您無法做任何事情來阻止僅使用PHP進行下載。 –

+0

@KodosJohnson我不想重寫網址。我只是試圖重定向,除非它們來自特定的URL。 – Jesse

回答

1

不幸的是,不可能做你所描述的。這是因爲當有人試圖從站點訪問文件時,Web服務器將首先檢查它是否存在,如果存在,它將立即提供文件。它沒有經過任何PHP代碼。因此,您不能編寫任何攔截此請求並阻止它的PHP代碼。

1

您可以使用我正在使用的這種方法。 享受。

你將需要列出這些IP地址。

<?php $allow = array("201.168.0.1", "456.789.123", "789.123.456"); //allowed IPs 

if(!in_array($_SERVER['REMOTE_ADDR'], $allow) && !in_array($_SERVER["HTTP_X_FORWARDED_FOR"], $allow)) { 

    header("Location: http://yourdomain.com/index.php"); //redirect 

    exit(); 

} ?> 
+0

感謝您的快速回答。這看起來或多或少是我在尋找的東西,但我是前端人員,所以在測試你的代碼之前我有一些非常基本的問題:我可以把它放在PHP文件中我的PHP代碼? – Jesse

+0

@JesseRogers,基本上你可以把這個文件放到index.php中。 所以當用戶觸發'www.yourdomain.com/index.php'時,它會檢查用戶的IP地址,然後重定向到你的php。也許你可以命名爲「www.yourdomain.com/main.php」這樣的其他名稱,所以只有擁有這些IP的用戶纔會重定向,其餘的則不會。如果有幫助,請點擊它作爲答案:D – FreedomPride

+0

由於您先回答問題,如果/當我可以得到您的答案時,肯定會給您答案。對不起,我只是需要很多後臺代碼的幫助,哈哈。另一個問題 - 「位置:http:// yourdomain.com/index.php」。如果用戶不是來自允許的IP,那麼這是用戶發送的地方嗎?或者是我想要保護的URL? – Jesse