Ситуация в общем такая. Сайт отзывается по адресу new.example.com . Находится в директории new. Работает нормально, но при создании новых материалов в админке после нажатия кнопки save перебрасывает на адрес new.example.com/new/add/<тип материала> .
Как это побороть?
Комментарии
Обычно для сайта на поддомене хостер предоставляет отдельную папку. К примеру, так обычно выглядит у хостера служебная директория с вашими сайтами:
/subdomain.example.com
...
/example.ru
А у вас что - поддомены на хостинге реализуются в виде одноименных поддиректорий в директории с самим доменом? Вообще нифига не понял.
Это на патруле чистота у порядок, у большинства это выглядит так:
includes
/subdomain.example.com
/example.ru
sites
.htaccess
index.php
Ну в общем да, примерно так. Только Друпал на основном домене не установлен.
Итак, к чему мы пришли.
Капитан Очевидность утверждает, что по нажатию кнопки save происходит сабмит формы, то есть отправление POST запроса по адресу, указанному в атрибуте action.
В котором естественно указано /new/add/<тип материала>. Значение атрибута action берется в том числе из функции request_uri, которая находится в файле includes/bootstrap.inc .
Если Drupal работает под Апачем, то функция берёт значение из глобальной переменной $_SERVER['REQUEST_URI'], в которую почему - то попадает директория new, где собственно и лежит сайт.
Текущее решение - добавить в эту функцию проверку, есть ли new в начале строки $uri и вырезание new, если это действительно так:
$uri = substr($uri,4);
Теперь вопросы.
1. Можно ли переопределить REQUEST_URI прямо в .htaccess?
2. Можно ли переопределить функцию request_uri, не залезая в ядро?