Делаю сайт на MVC-каркасе. .htaccess:
AddDefaultCharset utf-8
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
ErrorDocument 404 /404.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php
Вот router:
class Router
{
private $routes;
public function __construct()
{
$routesPath = ROOT.'/config/routes.php';
$this->routes = include($routesPath);
}
// Return type
private function getURI()
{
if (!empty($_SERVER['REQUEST_URI'])) {
return trim($_SERVER['REQUEST_URI'], '/');
}
}
public function run()
{
$uri = $this->getURI();
foreach ($this->routes as $uriPattern => $path) {
if(preg_match("~$uriPattern~", $uri)) {
// Получаем внутренний путь из внешнего согласно правилу.
$internalRoute = preg_replace("~$uriPattern~", $path, $uri);
$segments = explode('/', $internalRoute);
//Находим название Controller
$controllerName = array_shift($segments).'Controller';
$controllerName = ucfirst($controllerName);
//Находим название action
$actionName = 'action'.ucfirst((array_shift($segments)));
//Передаем в переменную $parameters оставшиеся части адресной строки
$parameters = $segments;
$controllerFile = ROOT . '/controllers/' .$controllerName. '.php';
if (file_exists($controllerFile)) {
include_once($controllerFile);
}
$controllerObject = new $controllerName;
$result = call_user_func_array(array($controllerObject, $actionName), $parameters);
if ($result != null) {
break;
}
}
}
}
}
Берет свои пути из routes.php:
<?php
return array(
'admin/product/update/([0-9]+)' => 'adminProduct/update/$1',
'admin/product/delete/([0-9]+)' => 'adminProduct/delete/$1',
'admin/products/create' => 'adminProduct/create',
'admin/products' => 'adminProduct/index',
'admin' => 'admin/index',
'login' => 'user/login',
'product/([\w]{1,})' => 'product/view/$1',
'category/([\w]{1,})' => 'site/category/$1',
'([\s\S\w\W\d\D]{1,})' => 'site/error',
'' => 'site/index/$1',
);
Вроде бы все уже готово, но возникла проблема: не работают GET-запросы. Вообще. Т.е. роутер распознает ссылку site/?utm_sourse=vk
как '([\s\S\w\W\d\D]{1,})' => 'site/error',
исходя из чего ни один GET-запрос не передается корректно. Вопрос - как это исправить? Видел предложение добавить в .htaccess RewriteRule ^(.*)$ index.php [QSA]
но не помогло :(
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Пытаюсь взять значение из ячейки, вставить вместо запятых перевод строки в ячейке, вернуть обратно
Я использую библиотеку ratchetПри запуске без nohup websocket работает без нареканий, при запуске с nohup command & выдает
ЗдравствуйтеПомогите, пожалуйста, заполнить массив $city значениями из БД для вывода в зависимый выпадающий список
При загрузке проекта нормально работает главная страница, но на любой переход высвечивается эта ошибкаИспользую mac и встроенный Apache