Я строй простой структуры MVC, мое намерение состоит в том, чтобы также иметь простые URL (без файла и расширения .php), основные правила:Basic MVC структура, минимизация URL и GET
- Все проходит через index.php
- /index.php/1/2 будет типичная URL-, 1-загружает класс контроллера (если такой существует контроллер), 2-вызовы методов (если такой способ существует)
Вот как я прячусь index.php из моих URL-адресов на файл Htaccess:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]
Это позволяет мне делать /1/2
Чтобы определить свой URL в PHP, я:
$url_parts = array_filter(explode("/", $_SERVER["REQUEST_URI"]));
Это дает я получаю доступ ко всем URL-адресам ny, я загружаю разные файлы в зависимости от $ url_parts [0] (контроллер) и $ url_parts [1] (метод/функция)
Только я есть одна забота сейчас, и что работает с $ _GET на моих страницах, если я достигаю что-то вроде:
/1/2?foo=bar
My $ _GET возвращается:
Array ([/1/2] =>)
В то время как я, очевидно, хотят, чтобы это было :
Array ([foo] => bar)
Может ли мой код вообще быть спасен? Я, очевидно, не знаю, как работает $ _GET, я ожидал, что это сработает.
Хороший материал! Это хорошо работает, только недостатком является то, что/1/2 все еще находится на $ _GET, но я думаю, что это «недостаток» моей реализации. –