帮助PHP的bootstrap和regex

我正在开发一个新的PHP框架,供个人在未来的项目中使用,以及
 下面是我计划的文件结构到目前为止.我只需要一些关于我的.htaccess文件的正则表达式的帮助,以及如何加载我想要的文件的一些帮助.

基本上,域之后的任何“文件夹”都应从我的“module”文件夹加载.
 我想从www.domain.com/module/account/加载w​​ww.domain.com/account/.我也希望它以该格式存在于模块下的任何其他文件夹中. “module”下的所有文件夹/文件都应该加载,就像它在顶层一样.

在这个例子中,虽然在我的module / account /文件夹中,如果我有一个名为home.php的文件,那么我应该可以通过www.domain.com/account/home而不是www.domain.com/module/account访问它. /home.php和www.domain.com/module/user/register.php实际上可以通过www.domain.com/user/register访问

我希望这是有道理的,并感谢任何帮助和任何建议.我主要需要帮助.htaccess文件来使这个文件夹结构工作.我还没有决定是否应该通过单个索引文件访问所有文件,或者我是否应该在每个页面中包含一个引导程序类型文件.引导程序文件将设置所有变量,配置选项,以及自动加载所有类文件并创建所需的对象.

myFramework/
--/assets/
--------/css/
--------/images/
--------/javascript/
--/includes/
---------/classes/
---------/config/
---------/language/
---------/header.php
---------/footer.php
--/module/
--------/account/
----------------/create.php
----------------/login.php
----------------/logout.php
----------------/settings.php
----------------/editprofile.php
--------/admin/
--------/blog/
--------/forums/
--------/messages/
--------/users/
--index.php

解决方法:

jasonbar的答案实际上几乎就在那里.所有它缺乏的是处理.php扩展,如你所描述的:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/module
RewriteCond %{REQUEST_URI} [.]php$
RewriteRule (.*)[.]php$/module/$1

话虽这么说,我强烈建议您考虑一个前端控制器范例(正如您在问题描述中所提到的那样),因为这样做可以实现更大的控制,鼓励MVC方法等等.= o)

编辑:

我纠正了一些忽略的点,并添加了PHP扩展的正确处理.注意,最后的[L]参数导致进一步处理停止,使得这些代码块可用作.htaccess文件中的逻辑结构(即通过阻止随后的任何处理);如果不需要此类功能,请删除该参数.

我还添加了一行来专门检查所请求的php文件是否确实存在.

RewriteEngine On

# if the uri matches a directory in the module dir, redirect to that. Disable 
# this block if you don't wish to have either directory browsing or to have the 
# default apache file load.
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/module%{REQUEST_URI} -d
RewriteCond %{REQUEST_URI} !^/includes
RewriteCond %{REQUEST_URI} !^/assets
RewriteCond %{REQUEST_URI} !^/module
RewriteRule (.*) /module/$1 [L]

# if the uri matches a file sans the .php extension in the module directory, 
# then redirect to that.
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/module%{REQUEST_URI}.php -f
RewriteCond %{REQUEST_URI} !^/includes
RewriteCond %{REQUEST_URI} !^/assets
RewriteCond %{REQUEST_URI} !^/module
RewriteRule (.*) /module/$1.php [L]

编辑:

要允许从模块目录提供以“.php”结尾的文件,请将以下内容添加到.htaccess文件中:

# if the uri matches a file with the .php extension in the module directory, 
# then redirect to that.
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/module%{REQUEST_URI} -f
RewriteCond %{REQUEST_URI} !^/includes
RewriteCond %{REQUEST_URI} !^/assets
RewriteCond %{REQUEST_URI} !^/module
# note that the following line restricts access to php files only. comment out 
# the following line to allow any existing file under module director to be 
# accessed (or modify the following to allow other file extensions to be read)
RewriteCond %{REQUEST_URI} [.]php$ 
RewriteRule (.*) /module/$1 [L]
上一篇:javascript – AngularJS:如何调试’已经使用此元素引导的应用’错误


下一篇:1.3 via讲解