2015-12-17 1 views
1

Я пытаюсь построить custom PHP MVC framework, я хочу сделать рерайт следующие используя .htaccessнесколько .htaccess правила перезаписи для пользовательских рамок PHP MVC

localhost/mvc/page1 ИЛИ localhost/mvc/page1/
К этому
localhost/mvc/index/view/page1

И

localhost/mvc/blog OR localhost/mvc/blog/
К данному
localhost/mvc/blog/index

И

localhost/mvc/blog/blog1 ИЛИ localhost/mvc/blog/blog1/
К этому
localhost/mvc/blog/view/blog1

здесь index и blog являются контроллеры

Ниже то, что я пытался до сих пор

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^(.*)$ index.php?rt=index/view/$1 [L,QSA] 

Это перенаправляет localhost/mvc/page1 Для localhost/mvc/index/view/page1

Поэтому в основном я хочу иметь различные условия переопределения для различных контроллеров. Поэтому, когда я добавлю новый контроллер, я продолжу добавлять условие к файлу htaccess.

Это код для перенаправления (URL-адрес не должен меняться). и все позади localhost/mvc/ должно быть отражено в GET $_GET['rt'] параметр

Как достичь этого ??

ответ

2

Имейте это так:

RewriteEngine on 
RewriteBase /mvc/ 

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 

RewriteRule ^(blog)/?$ index.php?rt=$1/index [L,NC,QSA] 

RewriteRule ^(blog)/([^/]+)/?$ index.php?rt=$1/view/$2 [L,NC,QSA] 

RewriteRule ^(.+)$ index.php?rt=index/view/$1 [L,QSA] 
+1

спасибо .. что работал :) .. поэтому всякий раз, когда я хочу, чтобы добавить новый контроллер, я должен добавить правило перенаправления до этого правила индекса по умолчанию права? ? –

+1

Да, это правильно, последнее правило - контроллер catch-all. – anubhava

+0

Просто для любопытства .. Как перенаправить, если у меня есть что-то вроде 'localhost/mvc/blog/blog1/edit' на' localhost/mvc/blog/view/blog1/edit' –

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