1

我不知道如何命名它,经过大量研究后,我没有找到我需要的东西。希望我能很好地解释这一点!

我的 URL 结构由 处理index.php,它获取整个 URL,分解 / 并将它们组织成一个数组,以查看将用户转发到哪里。作为一个例子在这里

现在大多数指南的问题htaccess是,他们给出的示例基于使用已知的查询字符串而不是预设的查询字符串,我正在获取 URL 并将其分解,因此它可以无限长。作为另一个例子,我们可以在上面添加新的子猫。

这仍然会正确转发(基本上脚本会自动接受第一项来拉模板,然后是最后一项用作文章 id 拉。中间的任何东西也可以有自己的模板,如果没有,使用显示其子类别中所有项目的通用项目)。

我正在尝试使用htaccess之后的所有内容mysite.com/并将其作为单个查询拉入以传递给索引。前任。(使用上述):

网址输入www.mysite.com/?cat1/subcat1/subcat2/subcat3/subcat4/page1

查询传递给 index.phpcat1/subcat1/subcat2/subcat3/subcat4/page1

现在的目标是最终删除“?” 在mysite.com/清理 URL 之后,它更像是mysite.com/cat1/subcat1.

至于我的研究,我只能根据已知的查询字符串(例如?cat1=&subcat1=)找到东西,但我需要它是动态的,因为不同的东西会有不同的深度。这是我的索引方面的用武之地,但我不知道如何htaccess将整个查询作为一个字符串转发以进行分析。

任何帮助将不胜感激,并希望这足够清楚,可以理解。如果有任何问题,请随时提问。

提前致谢!

更新

我已经让它有点工作了。这是我现在使用的代码:

RewriteRule  ([^/]+) index.php?%{REQUEST_URI}%{QUERY_STRING} [nc]

这在大多数情况下都有效,但它总是按如下方式设置数组项:

0 => 空
1 => index.php

2 =>(查询的第一部分,例如“cat1”)

我已经尝试以多种方式更改上面的代码,但我想我缺乏知识使我无法正确设置它(或多或少,数组空间 3 中的内容应该在空间 0 中,而当前的 0 /1 (empty/index.php) 应该被删除。

4

2 回答 2

1

怎么样
RewriteRule (.+) index.php?url=$1 [nc]

比在您的 index.php 中,您将拥有

<?php    echo $_GET['url']; ?>
    output: cat1/subcat1/subcat2/subcat3/subcat4/page1

并且应该手动拆分您的类别。

于 2012-07-23T14:45:41.680 回答
0

我真的不知道如何解决您的问题,但您正在谈论的问题称为 url 重写。

这是在 PHP 和内容管理系统中组织事物的常用方法。一个框架。该框架称为 MVC 或模型视图控件。

我知道在cake-php这个特定的framework/csm中,完全可以关闭url重写。虽然如果你这样做,我认为它会恶化搜索引擎优化。

于 2012-07-23T14:24:16.193 回答