Не знаю, как сделать фронт-контроллер, если...
Добрый день, возможно вопрос не в данную рубрику. Изучаю ООП, ранее использовался только процедурный стиль. Читаю статьи, делаю практику на локальном хостинге. Тут нарисовался шанс испытать себя на реальном проекте. Итак, у клиента хостинг jehost (FastCGI (Apache)), настраиваю .htaccess так:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?r=$1 [L,QSA]
и, допустим, при таком url site.ru/catalog/pc/, $_GET["r"] ничего не выводится. Попробовала настроить просто такой редирект RewriteRule ^(.*)$ public/?$1 [R=302,QSA], с помощью сервиса проверки редиректа видно, что в $1 попадает только index.php то есть site.ru/catalog/pc/ -> site.ru/public/?index.php.
Написала в техподдержку хостинга, сказали, что так и должно работать. На локальном работает правильно, на другом хостинге тоже. Как в таком случае получить route?
Ответы (3)
Привет! Попробуй так:
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.*)$ ./index.php?r=$1 [QSA,L]
Спасибо за ответ! Но, к сожалению, такой способ тоже не сработал. Выводит NULL ($_GET['r']).
Целый учебник по mod_rewrite https://hackware.ru/?p=5485
Если вкратце, то можно включить логи apache2 и посмотреть результат преобразования.