2016-04-24 71 views
1

我有一個網結構像如何使用Apache htaccess和PHP將請求路由到非公共目錄?

php/ 
public_html/ 
    .htaccess 

我怎樣才能航線什麼

www.mywebsite.com/app/ 

到我的實際PHP控制器

php/App.php 

到目前爲止,我有

Options +FollowSymLinks 
RewriteEngine On 

RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 

RewriteRule ^app/*$ ./php/App.php?* 

但這是錯誤的,因爲

  1. 到App的目錄是錯誤的。不知道如何將移動到/php DIR

  2. 我需要傳遞的所有請求參數(GET和POST)來App.php,但我不知道怎麼樣,我想?*

回答

2

更好和更常見的方法是在public_html目錄中創建index.php目錄,其中包含位於web根目錄上的php目錄中的PHP腳本。

像Laravel這樣的好框架使用這種方法。在這裏你可以看到Laravel's .htaccess

你可以使用GETPOST只是你通常會這樣做。

+0

這不好嗎?我以爲我必須讓我的PHP不公開。如果我把App.php放入public_html中,並且它包含(當然有文件路徑)到Users.php等東西,是不是沒有達到目的? – user3822370

+0

@ user3822370 - 不,它並沒有達到目的。該代碼包含在索引文件中用於執行目的。只要你的代碼在web根目錄之上,沒有任何東西可以訪問它,但索引文件。所以這是正確的方法。事實上,沒有其他的方式可以引用你的代碼,因爲'.htaccess'不能在它所在的目錄之上看到。 –

+0

只是澄清一些事情:在這種情況下使用索引文件被稱爲* bootstrapping *因爲它會爲你的應用程序加載所需的東西 - 從而啓動它。在Laravel的世界裏,引導程序有點複雜,使用自動加載等。 –

相關問題