mod_rewrite和动态目录结构

时间:2010-09-16 15:56:23

标签: php mod-rewrite

我正在使用php构建一个页面管理员,并且有一个功能可以让我创建其他页面的子页面。使用递归函数(基于who是谁的父亲),我最终得到一个链接列表,如:

<ul class="navList" id="navList">

   <li><a href="http://mysite.com/Home">Home</a></li>
   <li><a href="http://mysite.com/About">About</a></li>
   <li><a href="http://mysite.com/Links">Link Page</a>

   <ul>

      <li><a href="http://mysite.com/Links/PHP_Links">PHP Links</a></li>
      <li><a href="http://mysite.com/Links/JQuery_Links">JQuery Links</a></li>
      <li><a href="http://mysite.com/Links/Contributors">Contriubutors</a>

      <ul>

         <li><a href="http://mysite.com/Links/Contributors/Blog">Blog</a></li>

      </ul>

      </li>

   </ul>

   </li>

   <li><a href="http://mysite.com/Portfolio">Portfolio</a></li>

</ul>

因此,您可以看到最终可能有多个目录。现在,我的问题是,我如何使用mod_rewrite预测和处理这个问题?我有一个脚本我用于目录可能只有一层深度的情况,但是经过一个目录的任何东西都会重新路由到主页作为错误......

RewriteEngine On
RewriteRule ^([^/.]+)/([^/.]+)$ index.php?category=$1&page=$2 [L,NC]
RewriteRule ^([^/.]+)/$ index.php?category=$1 [L,NC]
RewriteRule ^([^/.]+)$ index.php?page=$1 [L,NC]

ErrorDocument 404 /index.php?page=home
ErrorDocument 403 /index.php?page=home

我认为这是一个逻辑问题。

思想?

2 个答案:

答案 0 :(得分:3)

好的,所以,在这里写出来似乎有所帮助。这就是我做的......

我改变了我的mod_rewrite给我发了整个字符串

RewriteEngine On
RewriteRule ^([^.*]+)$ index.php?page=$1 [L,NC]

然后在我的php中,我使用'/'

爆炸$ page
$dirStructure = explode('/',$page);

所以,如果网址是链接/博客/思考我会得到一个数组,我可以像:

Array
(
[0] => Links
[1] => Blog
[2] => Thoughts
)

然后我可以查找与数组的最后一个元素对应的页面。

答案 1 :(得分:0)

我认为你必须手工完成这个:

RewriteEngine On
RewriteRule ^([^/.]+)/([^/.]+)/([^/.]+)$ index.php?category=$1&page=$2&subpage=$3 [L,NC]
RewriteRule ^([^/.]+)/([^/.]+)$ index.php?category=$1&page=$2 [L,NC]
RewriteRule ^([^/.]+)/$ index.php?category=$1 [L,NC]
RewriteRule ^([^/.]+)$ index.php?page=$1 [L,NC]
相关问题