В моем нынешнем проекте у меня есть несколько каталогов: application (мои файлы MVC, к которым нельзя обращаться), images, css и js. По сути, я хочу, чтобы все запросы к images / css / js выполнялись без изменений, но все остальные, которые я хочу назвать index.php/my/path
.
Мой .htaccess в настоящее время выглядит следующим образом и наносит ущерб моей маршрутизации.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond $1 !^(index\.php|images|js|css|robots\.txt)
RewriteRule ^(.*)$ http://example.com/index.php/$1 [L]
</IfModule>
Это не работает, так как относительные URL-адреса начинают складываться, например: example.com/blog/view/1/blog/view/2
.
Когда я пытаюсь что-то вроде, -
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/(index\.php|images|js|css|robots\.txt)
RewriteRule ^ index.php%{REQUEST_URI} [PT]
</IfModule>
Я получаю эту ошибку при любом запросе: No input file specified.
Как заставить все запросы не в мои каталоги из белого списка вызывать, а не перенаправлять (отправка сообщений об убийствах с помощью перенаправления, я обнаружил), index.php/path
? IE, когда браузер запрашивает /blog/view/1
, .htaccess вызывает index.php/blog/view/1
. Справочные файлы на сайте Apache не слишком ясны о том, как делать такие вещи - или, я просто упускаю смысл того, что я читаю о RewriteRule.
И я действительно хочу это понять. Почему ваш ответ сработает? Почему мои попытки проваливаются?