2014-10-23 4 views
1

Я имею эту реж структуру на веб-странице:Как сделать динамический мод-рерайт для подкаталогов

rootOfweb/services/oneservice/service1.php 
rootOfweb/services/oneservice/service2.php 

rootOfweb/services/anothersercice/service1.php 
rootOfweb/services/anothersercice/service2.php 

www.example.com/index.php?sideID=nameOfService&p=services/oneservice/service2 

У меня есть этот код в PHP, включая файлы Thats необходимы:

<?php 
    if(isset($_GET["p"])) 
    { 
     $side = $_GET["p"]; 
     include ($side.'.php'); 
    } 
?> 

Я имеют различные имена на diffrent подкаталогов и я сделал один mod_rewrite, которые работают на одном из условий:

RewriteRule ^([a-åA-Å0-9_!-]+)/([a-åA-Å0-9_!-]+)$ index.php?sideID=$1&p=services/oneservice/$2 

aboue Руль e работа для первой службы (rootOfweb/services/oneservice/-все служебные файлы)

Мне нужно создать правило, которое может работать на всех поддиректорах.

+0

Снова проблема в вашем симпатичном URL-адресе 'http: // example.com/services/subfile1' не con tain 'subdir/YYYY', поэтому вам нужно было жестко указать его в цель. Если вы можете сохранить красивый URL как: 'http: // example.com/services/subdir/YYYY/subfile1', то одно правило перезаписи может обрабатывать все такие ситуации. – anubhava

+0

Как бы это переписать? Можете ли вы придумать пример? – sdfgg45

ответ

1

Исходя из из обсуждения в разделе комментариев выше вы можете иметь правила перезаписи, как это:

RewriteEngine On 
RewriteBase/

RewriteRule ^([\w!-]+)/([\w!-]+/[^/]+/[\w!-]+)/?$ index.php?sideID=$1&p=$2 [L,QSA,NC] 

Это будет поддерживать URL-адреса, такие как эти:

http://example.com/services/subdir/2014/subfile1 
http://example.com/services/subdir/2013/subfile2 
http://example.com/services/subdir123/2010/subfile234 
+0

Я сделал обновление по Вопросу, этот труд работы неудачен. – sdfgg45

+0

Какой URL-адрес вы указали в браузере и что такое '' _GET ['p'] 'в коде? Я получаю это как '$ _GET [['p'] => subdir/2014/subfile1' – anubhava

+0

orginal url: http://example.com/index.php?sideID=services&p=service/painting/learntopaint => http: //example.com/painting/learntopaint. Эта работа с правилом, о котором я добавил, но, делая это, мне нужно собственное правило для каждого subdir внутри служб. – sdfgg45

0

Вы должны иметь возможность просто изменить регулярное выражение:

RewriteRule ^([a-åA-Å0-9_!-]+)/([/a-åA-Å0-9_!-]+)$ index.php?sideID=$1&p=subdir/$2 
+0

У меня есть subdir/anotherdir/thefile.php, но как на самом деле заменить это на какое-то регулярное выражение? – sdfgg45

Смежные вопросы