Неправильное сообщение 404 об использовании Apache (переписывание .htaccess) - PullRequest
1 голос
/ 25 августа 2011

У меня есть этот URL http://xxxxxxxxx.com/account/session/login/redirect/%2Fhotel%2Frooms%2Findex%2Fhot_id%2F1, который использует Zend Framework (PHP).С помощью .htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-s
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php [NC,L]

Дело в том, что я получаю 404 Не найдено.Чтобы убедиться, что это Apache, я вышел из основного файла index.php как раз в тот момент, когда он запускается, и apache по-прежнему сообщает 404. Перед этим завершением не выполняется код php.

EDIT

В домене Apache для моего домена показана эта строка

190.78.208.30 - - [25/Aug/2011:17:48:17 -0430] "GET /account/session/login/redirect/Fhotel%2Frooms%2Findex%2Fhot_id%2F1 HTTP/1.1" 404 25821 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0"

Но в error_log

EDIT 2

нет строк

Если это полезно, я использую Apache 2.2.19, PHP 5.3.6, cpanel 11.30.2, CentOS 5.6

Print screen of 404 Not found error

Обратите внимание, что 404 не найден.Когда я выхожу из index.php перед выполнением чего-либо еще, 404 все равно появляется.Я могу быть уверен, что .htaccess читается.Следуя рекомендации, я положил

SetEnv MYENV 1

И появляется в phpinfo () в том же домене.Я просто дважды проверил свои access_log и error_log и остался, как описано выше.

Есть идеи, почему это происходит?

1 Ответ

0 голосов
/ 26 августа 2011

Вы уверены, что ваш файл .htaccess читается Apache? Убедитесь, что по:

  1. У вас есть права на переопределение значений в каталоге вашего сайта. чтобы иметь это, у вас должно быть что-то вроде этого в вашем конфигурационном файле Apache:

    AllowOverride All
    

    замените / var / www / html на путь к общедоступному каталогу вашего сайта

  2. У Apache есть права на чтение вашего файла .htaccess.

Таким образом, Apache может читать и применять конфигурации в вашем файле .htaccess.

Чтобы проверить это, установите переменную окружения в вашем файле .htaccess:

SetEnv MYENV 1

, а затем используйте функцию phpinfo () в файле index.php и найдите переменную окружения. Если переменная окружения отсутствует в выводе phpinfo (), это означает, что файл .htaccess не анализируется Apache.

...