Назад | Перейти на главную страницу

Проблема с Apache .htaccess: входной файл не указан

Может кто-то помочь мне с этим. Я чувствую, что бьюсь головой о стену уже более 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]
  1. Дважды проверьте окончания новой строки. Apache придирчиво относится к ним в .htaccess.
  2. Отключите мультивьюверы в .htaccess (Параметры -Multiviews), как указано в Овчарка IT
  3. Вы всегда можете узнать больше о своей среде с помощью функции phpinfo ()

Я столкнулся с той же проблемой, пытаясь настроить удобный 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>

Обновление: информация о моей системе:

  • Сервер: Xubuntu 9.x (практически такой же, как Ubuntu)
  • Apache: версия 2.2
  • Рассматриваемая конфигурация находится в / etc / apache2 / sites-available / default.

Кстати, я новичок в веб-дизайне, php и CodeIgniter (я только что запустил php на прошлой неделе, а CodeIgniter вчера), поэтому, пожалуйста, укажите любую ошибку в моем ответе.

Обновление 2: если после этого вы получите код ошибки 500 вместо 404. Это означает, что у вас не включен модуль перезаписи. Выполните следующую команду, чтобы исправить это:

$ sudo a2enmod rewrite