Может кто-то помочь мне с этим. Я чувствую, что бьюсь головой о стену уже более 2 часов.
На моем компьютере установлены Apache 2.2.8 + PHP 5.2.6, и .htacces с приведенным ниже кодом работает нормально, без ошибок.
RewriteEngine on
RewriteCond $1 !^(index\.php|css|gfx|js|swf|robots\.txt|favicon\.ico)
RewriteRule ^(.*)$ /index.php/$1 [L]
Тот же код на сервере моего хостинг-провайдера дает мне код ошибки 404 и только выводит: Не указан входной файл. index.php ЕСТЬ. Я знаю, что у них установлен Apache (нигде не могу найти информацию о версии), и они используют PHP v5.2.8.
Я использую 64-разрядную версию Windows XP, они запускают Linux и php в режиме cgi / fastcgi. Кто-нибудь может подсказать, в чем может быть проблема?
PS. если это важно, чтобы CodeIgniter работал с понятными URL-адресами.
Оказалось, мне нужна RewriteBase:
RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|css|gfx|js|swf|robots\.txt|favicon\.ico)
RewriteRule ^(.*)$ /index.php/$1 [L]
Я столкнулся с той же проблемой, пытаясь настроить удобный URL-адрес для моего проекта CodeIgniter. Я наконец-то понял. Давайте посмотрим на мою конфигурацию apache2:
<Directory /home/hai/www>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
Проблема в строке с надписью AllowOverride Никто. Измените Нет на Все и это работает:
<Directory /home/hai/www>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
Обновление: информация о моей системе:
Кстати, я новичок в веб-дизайне, php и CodeIgniter (я только что запустил php на прошлой неделе, а CodeIgniter вчера), поэтому, пожалуйста, укажите любую ошибку в моем ответе.
Обновление 2: если после этого вы получите код ошибки 500 вместо 404. Это означает, что у вас не включен модуль перезаписи. Выполните следующую команду, чтобы исправить это:
$ sudo a2enmod rewrite