LINUX.ORG.RU
ФорумAdmin

Тонкая настройка Apache


0

0

Добрый день.

Стоит Apache 2.0.46, php как модуль (Apache 2.0 Filter)в DOCUMENT_ROOT лежит файл art произвольного PHP-содержания, пусть будет такой: $cat ./art <?php print "1"; ?>

набираю URL http://domain.ru/art - Получаю ответ

Набираю http://domain.ru/art/something - Получаю ошибку 404 и запись в ErrorLog

В настройке апача добавлена директива, призывающая принудительно обрабатывать файл как PHP. <FilesMatch "^(art)$"> ForceType application/x-httpd-php </FilesMatch>

Формулировка проблемы/задачи: при получении запроса вида http://domain.ru/art/something не выдавать ошибку, а выполнять скрипт art.

Почему вопрос возник - переношу сайт, который работает на стороннем хостинге. У себя столкнулся вот с такой ситуацией. Просьба кто знает способы решения, просьба отписаться.

anonymous

Ответ на: комментарий от theserg

Блин, должен был написать про Rewrite в первом сообщении, куда-то делось :(

Достоверно известно, что на стороннем хостинге RewriteEngine off.

anonymous
()
Ответ на: комментарий от kvit

Нельзя, нельзя так! Это не выход. У меня 2 таких сайта. В перспективе возможно будут еще прецеденты. Клиент в коде не понимает - факт! Сайт заказан у стороннего разработчика. Сайт работает на сторонем хостинге - тоже факт. Разработчик добавит что-либо - сайт снова перестанет работать. Я уже заставил конкретный сайт работать с помощью RewriteRule и добавления 6 строчек в исходных код - но это не выход.

Если описать ситуацию в двух словах, абстрагируясь от конкретики, то плеск на запрос вида http://domain.ru/index.php/something выдает ошибку 404, вместо того, чтобы запустить существующий файл index.php.

Вопрос остается открытым.

anonymous
()
Ответ на: комментарий от anonymous

>У меня 2 таких сайта. В перспективе возможно будут еще прецеденты.

Ну и при чем тут 2 сайта? Можно прописать правила для каждого виртуалхоста по отдельности.

>Если описать ситуацию в двух словах, абстрагируясь от конкретики, то плеск на запрос вида http://domain.ru/index.php/something выдает ошибку 404, вместо того, чтобы запустить существующий файл index.php.

Я так и не понял, что конкретно ты хочешь, могу лишь догадываться.. Если тебе, к примеру, надо, чтобы линки типа:

http://domain.ru/<;что-то, написанное до слеша>/<лишняя фигня>

Преобразовывались в рабочие линки типа:

http://domain.ru/<;что-то, написанное до слеша>

То можно глобально сделать так:

RedirectMatch permanent ^(/[^/]*)/.*$ /$1

Ну или еще как-нить поэкспериментировать с регеспами

Если тебе не подходит именно RedirectMatch, то объясни почему и конкретнее сформулируй задачу.

P.S. Хостинг на plesk'е?:)

kvit
()
Ответ на: комментарий от kvit

Эээ.. ошибочка вышла, слеш лишний добавил, а так, вроде все правильно. Хотя не проверял. Должно быть так:

RedirectMatch permanent ^(/[^/]*)/.*$ $1

kvit
()
Ответ на: комментарий от kvit

Возможно, я действительно нечетко задачу поставил. Попробую еще раз.

Сейчас у меня 2 сайта, которые работают по следующему приницу. Все запросы имеют вид http://domain.ru/art/что-то/еще - для одного http://domain.ru/main/что-то/еще - для другого

где art и main - это php-файлы. На стороннем хостинге они работают. На моем, который под PLESK, нет. Причина, почему они не работают заключаеся в том, что на запрос http://domain.ru/art/что-то/еще я получаю ошибку 404. На стороннем хостинге при таком запросе управление получает файл art и на основе /что-то/eще формирует вывод.

Теперь почему нельзя исп. RegExp. Потому что файл art разбирает аргумент /что-то/еще может обратиться в произвольное место файловой системы или сделать запрос из базы данных. То есть преобразовывать RedExp'ом не во что.

Стоит задача, при запросе вида http://domain.ru/art/что-то/еще - для одного Передать управление в файл art, а не получить ошибку 404.

anonymous
()
Ответ на: комментарий от anonymous

Теперь, с одной стороны, более-менее понятно стало:)

Не силен в php, но вроде параметры скрипту должны передаваться как-то так:

file.php?param=value

может как раз преобразование к такому виду и идет? Хотя может как-то с AddHandler и Action еще получится поиграться.

kvit
()
Ответ на: комментарий от borisych

Огромное спасибо за директиву AcceptPathInfo. Это именно то, что я искал.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.