Всем доброе утро, надеюсь это будет легко! (Я еще даже не пил кофе, почему я так рано встаю?!)
В любом случае... у меня есть для вас два вопроса: Первая (основная) проблема, что я пытаюсь удалить index.php из своих ссылок (что кажется почти невозможным, спасибо hostgator :)). После множества поисков я дошел до того, что /page перенаправляет на /index.php/page. Сейчас это лучше, чем ничего, но конечно все же не идеально. И мне пришлось использовать [R], чтобы сделать это. Мой .htaccess:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [R,L]
Вторая (сложная) проблема. Мне нужно удалить index.php из URL-адреса, но при этом убедиться, что отображается правильный контроллер страницы (т. е. какая страница находится в URL-адресе). Я использую PATH_INFO, чтобы получить переменную и отобразить нужную страницу, и это работает, когда есть index.php.
Но по какой-то причине, когда вы убираете R из этого последнего правила RewriteRule, /page всегда по умолчанию использует основной шаблон index.php. Это похоже на то, как .htaccess или что-то еще переписывает PATH_INFO на пустое, прежде чем мой сайт сможет обработать страницу. Я думаю, мне нужно заблокировать PATH_INFO прежде чем .htaccess перезапишет его.
Для некоторого тестирования я застрял в var_dump(path_segments());
, и когда на /index.php/page он дает: array(2) { [0]=> string(0) "" [1]=> string(10) "proper-page" }
. Однако, когда вы уберете R из приведенного выше правила перезаписи и получите доступ не только к /page, это просто даст: array(2) { [0]=> string(0) "" [1]=> string(0) "" }
.
Теперь я даже не знаю, нужно ли мне беспокоиться о второй проблеме, если есть простой способ решить первую. Но, по крайней мере, это все, что я пытаюсь выяснить сейчас. Ценю всю помощь, которую я могу получить!