Добрый день!) Возникла у меня тут проблемка: Есть сайт, построен на MVC каркасе, в .htaccess прописано следующее: .htaccess Код (Text): AddDefaultCharset utf-8 Options +FollowSymLinks RewriteEngine on RewriteBase / ErrorDocument 404 /404.php RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php Проблема заключается в том, что мне нужны GET параметры для яндекс.метрики и google.analytics (UTM-метки), однако любой запрос с GET параметрами ведет на index.php Подразумеваю, что делать это надо в файле router.php, вот его содержимое: PHP: <?php 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; } else { header("HTTP/1.0 404 Not Found"); include_once (ROOT . '/views/site/404.php'); break; } } } } } Буду очень благодарен Вашей помощи! А то ужас какой-то сайт сделал, а работать не сделал
ну вот деректива указывающая куда "вести" убрав её будет вести куда попало. router.php здесь видимо не причём. нужно изменить директиву чтобы заменялась только страница сохраняя гетзапрос
@Alexxosipov, кажется ты это делал по статье с хабра. Получи эти get-параметры в контроллере страницы.
блин, ребят. вы советчики. QSA флаг надо просто добавить в конец строки и всё будет прилипать. Все сайты так живут. http://httpd.apache.org/docs/current/rewrite/flags.html#flag_qsa Код (Text): RewriteRule . index.php [QSA]