Всем добра! .htaccess замучил меня... Помогите решить проблему. Есть движок MVC, роутинг прописывается типо 'settings' => 'account/settings', Спойлер: .htaccess Код (Text): RewriteEngine on RewriteBase / RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L] Options +FollowSymlinks RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !^/assets/ RewriteCond %{REQUEST_URI} !^/sitemap.xml RewriteCond %{REQUEST_URI} !^/robots.txt RewriteRule .* index.php [L,QSA] php_value default_charset utf-8 php_value error_reporting 'E_ALL & ~E_DEPRECATED & ~E_NOTICE' AddType 'text/html; charset=utf-8' .html .htm .shtml Хотелось бы получить и обработать http://saitru/index.php?code=qwerty123 или http://saitru/settings?code=qwerty123 Спасибо!
Строка параметров наследуется при редиректе/рерайте даже без указания QSA, если в подстановке не указана своя строка параметров. Т.е. по идее все должно работать. Или вы просто не знаете, как обрабатывать показанные запросы? --- Добавлено --- Или речь о том, что роутер «режет» строку параметров/не пропускает такие запросы?
Какой? Главная так '' => 'main/index', Сам класс Спойлер PHP: <?php /** * */ class Router { public $routes; function __construct() { $routesPath = ROOT . '/config/routes.php'; $this->routes = include($routesPath); } private function getUri() { if (!empty($_SERVER['REQUEST_URI'])) return trim($_SERVER['REQUEST_URI'], '/'); } public function run() { $uri = $this->getUri(); $result = false; foreach ($this->routes as $uriPattern => $path) { if (preg_match("~^$uriPattern$~", $uri)) { $internalRoute = preg_replace("~$uriPattern~", $path, $uri); $params = explode('/', $internalRoute); $controllerName = ucfirst(array_shift($params) . 'Controller'); $actionName = 'action' . ucfirst(array_shift($params)); $controllerObject = new $controllerName(); call_user_func_array(array($controllerObject, $actionName), $params); $result = true; break; } } /*if ($result == false) { $controllerObject = new MainController(); $controllerObject -> ActionNotfound(); }*/ } } --- Добавлено --- UPDATE: Вроде бы сделал. PHP: RewriteCond %{QUERY_STRING} ^code=(.*)$ RewriteRule .*$ /settings/%1? [R=301,L] Так считается нормально? Поисковики не банят?
Это что-то непонятное. Редирект в /settings/* с переносом значения параметра в путь (и отбросом строки параметров за ненадобностью). Походу вы толком не смогли объяснить, что вам было нужно. Или вы по ходу дела решили изменить адресацию вместо подгонки роутера под имеющуюся адресацию.