在敲了 100 次 之后,我决定改变我的目录结构,现在一切正常。 :) 我发布这个答案是为了帮助其他遇到同样问题的人。这是我的目录结构。
- WebRoot /
- 应用名称/
- v0.2/
- v0.5/
- v0.9 /
- _APP /
- Acc /(单独的路线)
- API /
- 资产 /
- 测试/
- .htaccess
- 404.php
- config.php
- index.php
现在,这些是我在主文件中使用的代码:
API 下的 index.php 包含 Slim Routes。
APi 下的.htaccess 包含以下代码:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA]
</IfModule>
v0.9目录下的index.php包含主页
同一目录下的.htaccess包含:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]
RewriteRule ^(_APP/) - [F,L,NC]
</IfModule>
此 .htaccess 限制对 _APP 文件夹的直接访问,因为它包含敏感数据。现在人们会告诉我将其移到可公开访问的目录之外,但对于像我这样使用共享主机的用户,托管公司会限制到公共根目录之外。尽管使用此设置可以保护应用程序,但您应该始终尝试将此 _APP 目录移到公共目录之外。
主要的 config.php 包含:
<?php
// PROJECT SETTINGS
// Show Erros on Localhost and Local Ethernet only
$test_server = $_SERVER['SERVER_NAME'] == "127.0.0.1" || $_SERVER['SERVER_NAME'] == "localhost" || substr($_SERVER['SERVER_NAME'],0,3) == "192";
ini_set('display_errors',$test_server);
error_reporting(E_ALL|E_STRICT);
$_APP=array();
// META CONFIGURATIONS
$_APP= array_merge($_APP, array(
'meta'=>array(
'name'=>'expoWWW',
'ver'=>'v 0.0.2',
'url'=>'http://localhost/AppName/v0.9/',
'root'=>$_SERVER['DOCUMENT_ROOT'].'/',
'appUrl'=>'AppName/v0.9/',
'author'=>'Abhishek Deb (iam@debabhishek.com)',
'admin'=>''
)
));
// DATABASE CONFIGURATION
$_APP= array_merge($_APP, array(
'db'=>array(
'h'=>'localhost',
'u'=>'root',
'p'=>'root',
'd'=>'APpName'
)
));
// FUNCTIONS
// HOUSE-KEEPING
?>
用法:我只需将这个配置文件包含在每个php文件中,然后我就可以使用$_APP['db']['h']