Я создал веб-сайт с самодельной структурой MVC и симпатичными URL-адресами с .htaccess. У меня есть этот «фронт-контроллер» (index.php
) в корне моего сайта:MVC & RewriteRule совсем не работает
<?php
require_once('M/connect_sql.php');
if (!empty($_GET['page']) && is_file('C/'.$_GET['page'].'.php'))
{
include 'C/'.$_GET['page'].'.php';
}
else
{
include 'C/accueil.php';
}
$bdd = NULL;
C/
моя папка контроллера.
Пример моих адресов: http://domain.com/?page=restaurants&city=paris&CP=75001
page
параметр для моего контроллера и &city=paris&CP=75001
являются POST переменные.
Я проверил простое правило перезаписи MVC и работает хорошо. Я пробовал несколько правил перезаписи, но никто не работает.
Вот пример для приведенного выше URL:
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(.+/)/([^/.]+)/([^/.]+)/?$ /?page=$1&city=$2&CP=$3 [NC,L]
</IfModule>
Я разместил .htaccess
в каждой папке (корень, контроллер, взгляды), но я не могу получить его.
EDIT SINCE ОТВЕТА:
Вот мой новый контроллер, так как Entwicklerpages заметить дыру в безопасности. Нашел решение здесь: http://kkovacs.eu/exploiting-web-development-worst-practices-file-inclusion
if (isset($_REQUEST['page']) and ! is_null($_REQUEST['page']))
{
$page = $_REQUEST['page'];
switch ($page) {
case 'restaurant':
include('C/restaurant.php');
break;
case 'restaurants':
include('C/restaurants.php');
break;
}
}
else {
include('C/accueil.php');
}
Большое спасибо Entwicklerpages за время вы взяли, чтобы ответить. Это действительно помогает! Мне удалось сделать RewriteRule. Для дыры в безопасности я обновил сообщение с найденным решением. Считаете ли вы, что сейчас это безопаснее? – Damien