Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ошибочный синтаксис .htaccess, помогите разобраться пожалуйста 
:(
    Опции темы
Drkwv
Дата 31.10.2007, 05:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 21.3.2006

Репутация: нет
Всего: нет



Возникла проблема с хостером, упорно утверждающим, что синтаксис директив .htaccess некорректен:
Код

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php5

Это действительно так? Тут действительно имеется ошибка?
Скрипт при этом редиректе падает с ошибкой 500 (причем не везде, а только у них на хостинге).

Это сообщение отредактировал(а) Drkwv - 31.10.2007, 05:23
PM MAIL   Вверх
ZeeLax
Дата 31.10.2007, 06:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 4388
Регистрация: 20.8.2006
Где: Алма-Ата

Репутация: 2
Всего: 88



Лог читали?


--------------------
Utility is when you have one telephone, luxury is when you have two, opulence is when you have three — and paradise is when you have none.
— Doug Larson
PM MAIL WWW ICQ Skype Jabber   Вверх
Drkwv
Дата 31.10.2007, 07:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 21.3.2006

Репутация: нет
Всего: нет



Цитата(ZeeLax @ 31.10.2007,  06:02)
Лог читали?

access_log мне подключить удалось, но там нет ничего интересного, а error_log не появляется (видимо, из-за того что ошибка не фиксируется).

Где посмотреть лог самого реврайта - я не знаю да и очень сомневаюсь, что он там вообще ведется.

Сами же директивы работают просто - первый раз редиректит на index, а второй, когда обнаруживается подмена скрипта на самого себя, rewrite прекращает свою работу и запускает index. Этот способ описан по-моему, даже где-то в доках по apache.
PM MAIL   Вверх
ZeeLax
Дата 31.10.2007, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 4388
Регистрация: 20.8.2006
Где: Алма-Ата

Репутация: 2
Всего: 88



А модуль то подключен?

Добавлено через 1 минуту и 48 секунд
Цитата(Drkwv @  31.10.2007,  10:18 Найти цитируемый пост)
access_log мне подключить удалось, но там нет ничего интересного, а error_log не появляется (видимо, из-за того что ошибка не фиксируется).

Где посмотреть лог самого реврайта - я не знаю да и очень сомневаюсь, что он там вообще ведется.

Видимо, потому, что криво настроено логирование. Или не там искали. Логов реврайта нет - он модуль апача, и всё, связанное с ним (с реврайтом) логирует апач.


--------------------
Utility is when you have one telephone, luxury is when you have two, opulence is when you have three — and paradise is when you have none.
— Doug Larson
PM MAIL WWW ICQ Skype Jabber   Вверх
Drkwv
Дата 31.10.2007, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 21.3.2006

Репутация: нет
Всего: нет



Цитата(ZeeLax @ 31.10.2007,  14:52)
А модуль то подключен?

А вот тут начинается самое интересное:
Код

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php

этот код работает как надо. Заменяем на index.php5 - не работает. И я не могу понять логику людей тупо твердящих, что проблема в синтаксисе. Может я не знаю чего?

Это сообщение отредактировал(а) Drkwv - 31.10.2007, 15:23
PM MAIL   Вверх
ZeeLax
Дата 31.10.2007, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 4388
Регистрация: 20.8.2006
Где: Алма-Ата

Репутация: 2
Всего: 88



А php5 верно обрабатываются при вызове напрямую?


--------------------
Utility is when you have one telephone, luxury is when you have two, opulence is when you have three — and paradise is when you have none.
— Doug Larson
PM MAIL WWW ICQ Skype Jabber   Вверх
Drkwv
Дата 31.10.2007, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 21.3.2006

Репутация: нет
Всего: нет



Цитата(ZeeLax @ 31.10.2007,  15:16)
А php5 верно обрабатываются при вызове напрямую?

Да.
PM MAIL   Вверх
ZeeLax
Дата 1.11.2007, 04:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 4388
Регистрация: 20.8.2006
Где: Алма-Ата

Репутация: 2
Всего: 88



Нужен лог.


--------------------
Utility is when you have one telephone, luxury is when you have two, opulence is when you have three — and paradise is when you have none.
— Doug Larson
PM MAIL WWW ICQ Skype Jabber   Вверх
Drkwv
Дата 1.11.2007, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 21.3.2006

Репутация: нет
Всего: нет



От службы тех. поддержки пришло письмо с правильным вариантом .htaccess. Пробным путем выяснилось, что работоспособность mod_rewrite зависит от одной строчки:
Код

RewriteCond %{REQUEST_FILENAME} !-f

Т.е. код:
Код

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php5

работает, а 
Код

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php5

не работает. Чем можно объяснить такое поведение?

UPD:
Код

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php5
или
Код

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php5
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php5

также выдает ошибку.

Это сообщение отредактировал(а) Drkwv - 1.11.2007, 17:22
PM MAIL   Вверх
ZeeLax
Дата 1.11.2007, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 4388
Регистрация: 20.8.2006
Где: Алма-Ата

Репутация: 2
Всего: 88



а
Код

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php5

работает?


--------------------
Utility is when you have one telephone, luxury is when you have two, opulence is when you have three — and paradise is when you have none.
— Doug Larson
PM MAIL WWW ICQ Skype Jabber   Вверх
Drkwv
Дата 1.11.2007, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 21.3.2006

Репутация: нет
Всего: нет



Цитата(ZeeLax @ 1.11.2007,  19:06)
а
Код

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php5

работает?

Да, работает

а
Код

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .* index.php5

при запросе прямо на index.php5 или другие файлы выдает ошибку. 
Я бы мог предположить, что оно вываливает ошибку если редирект идет сам на себя, но
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php5
тогда должен валиться при запросе прямо на index.php5, т.к. он является файлом и не подходит под первый RewriteCond и не является директорией, подходя под второй RewriteCond => должен перенаправить на самого себя и выдать ошибку, чего не происходит.

Это сообщение отредактировал(а) Drkwv - 1.11.2007, 19:27
PM MAIL   Вверх
ZeeLax
Дата 1.11.2007, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 4388
Регистрация: 20.8.2006
Где: Алма-Ата

Репутация: 2
Всего: 88



Файл index.php5 существует?


--------------------
Utility is when you have one telephone, luxury is when you have two, opulence is when you have three — and paradise is when you have none.
— Doug Larson
PM MAIL WWW ICQ Skype Jabber   Вверх
Drkwv
Дата 1.11.2007, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 21.3.2006

Репутация: нет
Всего: нет



Цитата(ZeeLax @ 1.11.2007,  19:32)
Файл index.php5 существует?

Конечно существует. Выводит phpinfo.

Добавлено @ 19:50
Код

RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* index.php5

работает
Код

RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php5

выдает ошибку
Код

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php5

редиректит, но пропускает запросы напрямую к существующим файлам и директориям

Это сообщение отредактировал(а) Drkwv - 1.11.2007, 19:51
PM MAIL   Вверх
ZeeLax
Дата 1.11.2007, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 4388
Регистрация: 20.8.2006
Где: Алма-Ата

Репутация: 2
Всего: 88



Цитата(Drkwv @  1.11.2007,  22:39 Найти цитируемый пост)
Конечно существует. Выводит phpinfo.

Тогда какой может быть редирект сам на себя, если
Код

RewriteCond %{REQUEST_FILENAME} !-f

, проверив его на существование, не будет делать rewrite?

P.S. Пошла полемика. Читайте ман по реврайту и лог апача - он всё знает.

Это сообщение отредактировал(а) ZeeLax - 1.11.2007, 21:03


--------------------
Utility is when you have one telephone, luxury is when you have two, opulence is when you have three — and paradise is when you have none.
— Doug Larson
PM MAIL WWW ICQ Skype Jabber   Вверх
Drkwv
Дата 2.11.2007, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 21.3.2006

Репутация: нет
Всего: нет



Цитата(ZeeLax @ 1.11.2007,  21:02)
, проверив его на существование, не будет делать rewrite?

Да, я ошибся. Там AND по умолчанию для всех RewriteCond, поэтому не должен срабатывать. Сейчас наконец разобрался - оно с index.php5 посылало запрос в /cgi-bin/php5.cgi а mod его перехватывал и отправлял обратно на index.php5. В любом случае от хостера который не мог нормально ответить на мой вопрос, заставив потратить на это время, клиента нужно будет уводить куда-нибудь на мастерхост, что я и сделаю.
Код

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !/cgi-bin/php5.cgi$
RewriteRule .* index.php5

рабочий код, который, правда, не спасает от trailing slash если скрипт внутри директории. Возможно, если его чуть-чуть модифицировать, эту проблему тоже можно будет решить. Спасибо за участие.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Администрирование Web серверов и Web служб | Следующая тема »


 




[ Время генерации скрипта: 0.0519 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.