2016-04-24 64 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的世界里,引导程序有点复杂,使用自动加载等。 –