IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Пингвинятник (ОС *NIX) (https://www.imho.ws/forumdisplay.php?f=76)
-   -   Как написать .htaccess для php? (https://www.imho.ws/showthread.php?t=145123)

alexb83 07.01.2011 02:49

Как написать .htaccess для php?
 
Пример .htaccess из Django на языке Python:

SetHandler mod_python
PythonHandler django.core.handlers.modpython
PythonPath "['/public_html'] + sys.path"
SetEnv DJANGO_SETTINGS_MODULE programma.settings
PythonDebug On


....говоря по-русски:
использовать модуль mod_python для любого URL
применяя обработчик django.core.handlers.modpython
который расположен по адресу ['/public_html'] + sys.path"
ну и некая переменная окружения, в которой хранится путь и имя файла конфигурации....

Как сделать тоже самое для php?

P.S.: php работает как модуль Apache, т .е. mod_php5.

P.P.S: Просьба к людям, которые ответ на любой вопрос ищут в Википедии и тут же влезают в дискуссию с умным видом, сообщая какой-нибудь факт, найденный в Википедии. Уважаемые, блесните «знаниями» не в этом вопросе.

EvroStandart 07.01.2011 12:02

Не понял что конкретно нужно сделать.
Написать чтобы тотже модуль питона вызывался?

ЗЫ.
.htaccess не для php.
Он для сервера apache.

Hubbitus 08.01.2011 18:36

Если я правильно понял Вы хотите чтобы был только один вход (entrypoint), например index.php? Я бы тогда с помощьбю mod_rewrite рекомендовал все запросы переадресовать и все.

Если вдруг MR не доступен (такое редко случается чтобы mod_rewrite был не доступен на современных хостингах, но все же бывает), остается крайний вариант через обработчик 404 ошибки. Но в этом случае имеем засирание логов, и если предполагается их потом анализ, это может быть проблемой.

alexb83 08.01.2011 21:48

Путь к скрипту
 
Да, совершенно верно .htaccess:
RewriteEngine On
RewriteRule ^.*$ script.php [NC,L]


С этим как раз всё ясно.
Но вот возможно ли по аналогии php как cgi? например:
SetHandler obrabotchik
Action obrabotchik <[путь]имя файла>


А как модуль php типа:
SetHandler application/x-httpd-php
<каким-то образом указать путь к нужному скрипту>


mod_python ведь работает.
Или же с mod_php так невозможно сделать, т. е. нет таких директив в природе?
Имхо возможно ищем не в том месте.

Hubbitus 09.01.2011 00:26

CGI хандлер можно добавить любой скрипт. Если очень хочется, думаю еще можно рганизовать с помощью RedirectMatch.
Только смысл? Чем MR класический плох, что нужно искать другие пути?

alexb83 09.01.2011 16:39

Цитата:

Сообщение от Hubbitus (Сообщение 1734487)
Чем MR класический плох, что нужно искать другие пути?

Дело в том, что mod_rewrite перепишет всё на свете и, например, прописанный css-файл уже не вызывается и не работает. (Ещё много есть примеров)
Для переноса сайта с хостинга на хостинг - это громадное неудобство....каждый путь переписывать, подстраиваться под mr - пустая трата времени.
Для каких-то других задач mr может и хорош, но не для entrypoint (имхо).

Hubbitus 10.01.2011 15:09

Цитата:

Сообщение от alexb83 (Сообщение 1734547)
Дело в том, что mod_rewrite перепишет всё на свете и, например, прописанный css-файл уже не вызывается и не работает. (Ещё много есть примеров)

Это же Mod_Rewrite со всей его мощью! Хотите - исключите из перезаписи .css файлы, хотите, наоборот, переписывайте только .php, ну и так далее.

Цитата:

Сообщение от alexb83 (Сообщение 1734547)
Для переноса сайта с хостинга на хостинг - это громадное неудобство....каждый путь переписывать, подстраиваться под mr - пустая трата времени.

Не понял, какой путь!? Вы же не абсолютные пути прописываете? Значит ничего ровным счетом изменять при переносе не потребуется.

Это же классический стандартный путь, большинство MVC фрэймворков так работают, например та же Joomla.

alexb83 07.02.2011 03:02

Вот такая запись .htaccess работает на денвере:

Action obrabotchik /cgi-bin/script.cgi
SetHandler obrabotchik

А при переносе на сервер - 500-я ошибка
---------
На хостинге указано следующее:
"На нашем хостинге невозможно использовать директиву SetHandler cgi-script. В этом случае ваши скрипты будут запускаться от пользователя nobody и работать не будут."

Что бы это значило? Связано ли это с 500-й ошибкой и как исправить?

Hubbitus 08.02.2011 01:49

С ошибкой связано. Значит хостинг не разрешает таким образом назначать обработчики. Если это не какой-нибудь стандартный php-cgi, который просто можно закоментировать в таком случае, то Вам видимо придется сменить хостинг.


Часовой пояс GMT +4, время: 06:44.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.