.htaccess重写访问php包含在子文件夹中

时间:2015-11-22 19:08:54

标签: php .htaccess mod-rewrite

我有这个URL给我两个主要参数,文件夹和页面,以及其他可以变量存在或不存在的taom:

http://www.domain.com/adm/master.php?f=folder&p=page&otherparam1=somthing&otherparm2=somthing&otherparm3=somthing[...]

在我的master.php文件中,我包含一个基于这些参数的php文件:

$folder = $_GET['f'];
$page = $_GET['p'];
if(empty($page)) {
    $page = 'dashboard';
}
$path = $folder.'/'.$page;
include_once 'pages/'.$path.'.php?otherparm1=somthing&otherparm2=somthing&otherparm3=somthing[...]';    

otherparam 是URL的多个参数。

我想重新打开网址以显示如下内容:

www.domain.com/adm/folder/page/somthing/somthing/somthing[...]

我搜索了网络,但未能找到解决方案。

2 个答案:

答案 0 :(得分:0)

如果你想用简单的.htacces来做,那么你可以使用以下.htacces代码:

RewriteEngine on
RewriteCond $1 !^(index\.php|css|favicon.ico|fonts|images|js|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

此代码的基本操作是覆盖您对域的请求(例如:localhost / mysite),而不是访问文件夹或文件,它将访问您的index.php。除了index.php,favoicon.ico,robots.txt文件和css,fonts,image和js文件夹或您在上面代码的第二行中定义的内容。

答案 1 :(得分:0)

在Root / .htaccess中尝试此操作

RewriteEngine On

RewriteRule ^adm/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ /adm/master.php?f=$1&p=$2&otherparam1=$3&otherparm2=$4&otherparm3=$5 [NC,L]

$ 1,$ 2,$ 3 ...包含在正则表达式捕获组中匹配的whateve值“([^ /] +)”。

这将重写

example.com/adm/folder/page/foo/bar/foobar

 example.com/adm/master.php?f=folder&p=page&otherparam1=foo&otherparm2=bar&otherparm3=foobar

不更改浏览器地址栏中的网址。