У меня есть веб-сервер Apache, который нормально обрабатывает mod_rewrite.У меня есть каталог с именем /communications/q/
, и я хочу переписать любой URI, чтобы вставить «index.php» перед остальной частью введенного URI.
Например, /communications/q/something/else
должен фактическислужить communications/q/index.php/something/else
.Это стандартная настройка PHP CodeIgniter.
Я поместил файл .htaccess
в каталог / q / и поместил в него следующее:
RewriteEngine On
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Когда я даже пытаюсь перейти в / communications / q /, я получаюошибка 404 не найдена.Что не имеет никакого смысла, потому что, если я прокомментирую материал .htaccess, я получу страницу index.php, если я перейду в / communications / q /, но с кодом я получу 404 Not Found.
Кто-нибудь заметит, что я делаю не так?
К вашему сведению, у меня есть контроллер под названием hello, так что технически / communications / q / hello должен работать, но это также 404.Но с .htaccess закомментировано, /communications/q/index.php/hello работает отлично.
..
==== ДОБАВЛЕННОЕ ПРИМЕЧАНИЕ № 1 ====
Используя CodeIgniter, я должен иметь возможность вызывать контроллеры и функциииспользуя структуру URI.Итак, у меня есть контроллер с именем welcome
, на самом деле, а затем функция с именем index()
, которая является значением по умолчанию, и функция с именем hello()
.
Как работает CI, я бы написал /communications/q/index.php/welcome
и я бы получил вывод функции index()
от контроллера welcome
.И на самом деле, сейчас это прекрасно работает .
К сожалению, наличие этого странного index.php
в URI громоздко и ненужно, поэтому CI предлагает использовать .htaccess, чтобы позволить URI пропускатьэтот раздел URI и заново ввести его в фоновом режиме, используя mod_rewrite.
Когда я добавляю RewriteRule выше, он не работает.Итак:
/controller/q/welcome
возвращает ошибку 404, когда должна возвращаться точно такая же вещь, как /controller/q/index.php/welcome
.Это проблема.Разве RewriteRule не должен заставить это работать?
..