Может кто-нибудь помочь мне с этим? У меня такое чувство, будто я уже 2 часа бьюсь головой о стену.
У меня установлено Apache 2.2.8 + PHP 5.2.6
на моей машине, и .htaccess
с кодом ниже работает нормально, без ошибок.
RewriteEngine on
RewriteCond $1 !^(index\.php|css|gfx|js|swf|robots\.txt|favicon\.ico)
RewriteRule ^(.*)$ /index.php/$1 [L]
Тот же код на сервере моего хостинг-провайдера дает мне код ошибки 404 и выводит only: No input file specified.
index.php. Я знаю, что у них установлен Apache (нигде не может найти информацию о версии), и они работают под управлением PHP v5.2.8.
Я на Windows XP 64-bit
, у них какой-то Linux
с PHP
в режиме CGI/FastCGI
. Кто-нибудь может подсказать в чем может быть проблема?
PS. если это важно, это для CodeIgniter
для работы с дружественными URL.
Update1:
mod_rewrite
установлен и включен.
Что я заметил, так это то, что если я изменю значение RewriteRule
на /index.php?$1
(знак вопроса вместо косой черты), оно перейдет в бесконечный цикл. В любом случае, использование вопросительного знака не вариант, так как CodeIgniter
(обязательно) не будет работать таким образом.
Домашняя страница также работает, когда я запрашиваю index.php напрямую: example.com/index.php
Я начинаю думать, что, возможно, Apache думает, что после добавления завершающего слеша это уже не файл, а папка. как изменить такое поведение?
Обновление 2:
Я был не прав.
Apache правильно обрабатывает эти URL.
Запрос http://example.com/index.php/start/
(домашняя страница) или любой другой действующий адрес работает.
Похоже, Apache
просто по какой-то причине не пересылает запрос.
Обновление 3:
Просто чтобы было ясно, чего я пытаюсь достичь.
Я хочу переписать адреса так:
http://www.example.com/something/ => http://www.example.com/index.php/something/
http://www.example.com/something/else/ => http://www.example.com/index.php/something/else/