Подобным образом с codeigniter я хочу поймать все запросы и переписать их в файл index.php, какие сайты находятся в корне моей доступной в Интернете папке. В отличие от примеров на codeigniter, однако я не хочу проверять, существует ли файл до того, как его переписать (потому что я не хочу разрешать прямой доступ к любым файлам).
У меня был частичный успех, используя следующее правило перезаписи:
RewriteRule ^(.*)$ index.php/$1/ [L]
Однако единственным способом, с помощью которого я могу заставить его работать, является добавление к нему переписывающего условия, которое делает некоторую проверку, чтобы убедиться, что запрос не для index.php, иначе я получаю ошибку внутреннего внутреннего сервера. Я посмотрел журнал ошибок и, похоже, из-за слишком большого количества повторных действий. Я понимаю, что если запрос index.php не имеет значения, так как они попадут в нужный файл, но я не понимаю необходимость этого условия, и я чувствую себя грязным, включая его, когда я не знаю, почему он должен быть там?
Правило работы …
RewriteCond %{REQUEST_URI} !^/index.php/
Его также стоит упомянуть, что это условие перезаписи работало, но опять же я не знаю, зачем это нужно!
RewriteCond %{REQUEST_FILENAME} !index.php
RewriteCond означает, что следующий RewriteRule оценивается только в том случае, если эти условия выполнены. В вашем случае в словах «Если запрошенный URI не начинается с /index.php, перенаправляйте его на index.php».
Вам нужна эта проверка, потому что в противном случае вы перенаправляете index.php себе в бесконечный цикл.