2010-09-16 3 views
0

Я создаю страницу admin в php и имею функцию, которая позволяет мне делать страницы детьми других страниц. С рекурсивной функции (основано на том, кто является родителем, кто) я в конечном итоге со списком ссылок, как:mod_rewrite и динамическая структура каталогов

<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 

Я предположив это своего рода логический вопрос.

Мысли?

ответ

3

Хорошо, так, пишу это здесь, казалось, чтобы помочь. Это то, что я сделал ...

Я изменил свой mod_rewrite, чтобы послать мне всю строку

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

Тогда в моем PHP я взрываюсь $ страницы с «/»

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

Итак, если URL-адрес должны были быть ссылки/Блог/Мысли я хотел бы получить массив я мог перебирать, как:

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

Я могу тогда просто Лоо k для моей страницы, которая соответствует последнему элементу массива.

+2

+1 для того, чтобы PHP обрабатывал более сложную работу, что привело к значительно более удобной системе. Обычно я отказываюсь от установки произвольной переменной GET и использую '$ _SERVER ['REQUEST_URI']' прямо, хотя это вопрос вкуса. – Wrikken

+0

.. с надлежащим RewriteCond! -f &! -d, конечно, в противном случае это чертовски работа, чтобы добраться до реальных файлов :) – Wrikken

+0

@wrikken, мне нравится отказываться от произвольного. Спасибо за ваш вклад :) –

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] 
Смежные вопросы