【问题标题】:.htaccess rewrite to access php include in subfolder.htaccess 重写以访问 php 包含在子文件夹中
【发布时间】:2015-11-23 03:35:07
【问题描述】:

我有这个 URL,它给了我两个主要参数,文件夹和页面,还有一些其他的 tahat 可以变量是否存在:

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 的多个参数。

我想重写 URL 以显示如下内容:

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

我已经搜索了网络,但无法找到解决方案。

【问题讨论】:

    标签: php .htaccess mod-rewrite


    【解决方案1】:

    如果你想用简单的 .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 文件夹或您在我上面代码的第二行中定义的内容。

    【讨论】:

    • 嗯,这不是问题所在。 OP 正在尝试将带有参数的 url 重写到不同的目的地,您的代码会将他/她发送到 index.php
    • 哦,原来他的意思。我虽然他想做这样的网址www.domain.com/adm/folder/page/somthing/somthing/somthing所以我给他一个例子如何做到这一点。是的,因为我认为它会将他发送到 index.php,以便他可以通过 index.php 路由它。
    【解决方案2】:

    在你的 Root/.htaccess 中试试这个

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

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

    这将重写

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

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

    不改变浏览器地址栏中的url。

    【讨论】:

    • 当我输入 URL www.domain.com/adm/folder/page 时,我被重定向到 www.domain.com/deltakere/legg-til...“adm”消失了...
    • 它们是真实的文件还是文件夹?我的意思是 /adm/folder/page ?
    • 是的。它是路径 adm/folder/page.php
    • 您的 htaccess 在子文件夹中吗?并且您在 htaccess 中还有其他规则吗?
    • 根目录下有个.htaccess,但是我现在已经删除了所有其他的.htaccess文件,还是不行。
    猜你喜欢
    • 1970-01-01
    • 2014-06-03
    • 1970-01-01
    • 2015-09-27
    • 2016-01-18
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多