Php mod_重写与动态目录结构

Php mod_重写与动态目录结构,php,mod-rewrite,Php,Mod Rewrite,我正在用php构建一个页面管理器,它有一个函数,可以使页面成为其他页面的子页面。通过一个递归函数(基于谁是谁的父对象),我得到了一个链接列表,如: <ul class="navList" id="navList"> <li><a href="http://mysite.com/Home">Home</a></li> <li><a href="http://mysite.com/About">Abou

我正在用php构建一个页面管理器,它有一个函数,可以使页面成为其他页面的子页面。通过一个递归函数(基于谁是谁的父对象),我得到了一个链接列表,如:

<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>
我想这是一个逻辑问题


想法?

我想你必须手工完成:

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]

我想你必须用手来做这件事:

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]

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

我修改了我的mod_重写,将整个字符串发送给我

RewriteEngine On
RewriteRule ^([^.*]+)$ index.php?page=$1 [L,NC]
然后在我的php中,我用“/”分解$page

$dirStructure = explode('/',$page);
因此,如果url是Links/Blog/thinks,我会得到一个数组,我可以像这样进行排序:

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

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

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

我修改了我的mod_重写,将整个字符串发送给我

RewriteEngine On
RewriteRule ^([^.*]+)$ index.php?page=$1 [L,NC]
然后在我的php中,我用“/”分解$page

$dirStructure = explode('/',$page);
因此,如果url是Links/Blog/thinks,我会得到一个数组,我可以像这样进行排序:

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

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

+1让PHP处理更复杂的任务,从而形成一个更易于维护的系统。我通常放弃设置任意GET变量,而是直接使用
$\u服务器['REQUEST\u URI']
,但这是一个品味问题。。。用合适的重写条件-f&-d当然,否则,要获得实际的文件是一件非常糟糕的工作:)@wrikken,我喜欢放弃武断。感谢您的输入:)+1让PHP处理更复杂的工作,从而使系统更易于维护。我通常放弃设置任意GET变量,而是直接使用
$\u服务器['REQUEST\u URI']
,但这是一个品味问题。。。用合适的重写条件-f&-d当然,否则,要获得实际的文件是一件非常糟糕的工作:)@wrikken,我喜欢放弃武断。感谢您的输入:)