Заменить базовый путь с установленным Drupal

13 декабря 2017 в 15:44
Аватар пользователя Lord of Cats Lord of Cats 0 31 Решено

Добрый день.

Подскажите, пожалуйста, как изменить базовый путь с установленным Drupal.

Изначально, сайт располагался по адресу:

https://site.ru/

Теперь сайт должен корректно открываться по адресу:

https://site.ru/subdirectory/

Я раскомментировал в файле /sites/default/settings.php параметр $base_url и присвоил ему значение:

$base_url = 'https://site.ru/subdirectory';

Сайт начал открываться по новому адресу, после чего я успешно авторизировался как в системе как пользователь.

Проблема: в пользовательских формах action ведет по старому адресу (как в админ. панели так и в формах на клиентской части). Пример:

<form action="/node/add/article" ...

Можно ли сделать так, чтобы в значении атрибута action было action="/subdirectory/<путь>"?

Комментарии

На самом деле друпал нигде не сохраняет установленный путь (как WP, например), поэтому сайт можно свободно перемещать между доменами и между каталогами, даже без изменения $base_url. В вашем конкретном случае надо более детально разбираться, возможно где-то в кастомных модулях был прописан абсолютный путь

13 декабря 2017 в 15:56

Ничего не открывается (страница не найдена), т.к. нет такого алиаса или URL'а из собственного модуля. Выделенный физический сервер под Debian.

13 декабря 2017 в 16:09

В целях отладки есть две копии одного и того же сайта которые подключаются к одной и той же БД MySQL. Оба они HTTPS, но у обоих разные сертификаты. У второго отличается способ шифрования.

13 декабря 2017 в 16:19

Это был бы идеальный вариант, но ПО, которое шифрует данные, портит URL.
Например:
test.site.ru - оригинальный сайт
security.site.ru/test/ - тот же сайт по защищенному каналу
В ПО которое предоставляет защищенный доступ нет возможности создать новый поддомен.

13 декабря 2017 в 16:29

А вообще, я никогда не видел, чтобы кто-либо так делал (этот же сайт в дочерний каталог). Это вообще законно?

13 декабря 2017 в 16:23

Предположительно может застрять в кеше.

Но вот это

Lord of Cats wrote:

В целях отладки есть две копии одного и того же сайта которые подключаются к одной и той же БД MySQL.
потенциально ведёт к большим проблемам.

Если отлаживается новая тема, то есть модули, которые позволяют для разных пользователей использовать разные.

14 декабря 2017 в 1:34

Кеш чистил путем изменения значения в атрибуте action в административной панели (Конфигурация > Производительность > Очистка кеша). Приписал в начале путь /subdirectory к уже имеющемуся.

14 декабря 2017 в 9:14

Скорее всего вам нужно не копировать сайт. А научить как-то вебсервер понимать, что субдиректория - это тоже типа как корень домена.

14 декабря 2017 в 9:09

Хм... Есть один вариант.
Возможно, в PHP надо сделать так:

<?php
$hostname 
gethostname();
$_SERVER['REQUEST_URI'] = '/' $hostname $_SERVER['REQUEST_URI'];
?>
14 декабря 2017 в 11:59

Если доступа к серверу нет, то ни один специалист не поможет. Если доступ есть, то не вижу проблем "научить" его понимать субдомены.

14 декабря 2017 в 13:30

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

14 декабря 2017 в 13:45

Механизм извещения о упоминании, безусловно хорошая штука, но я пока не понимаю, чем-бы я мог помочь тут. Smile

Тут нет никакой проблемы с сервером, тут какие-то странности в поведении форм, насколько я понимаю...
А, вообще, нужно просто два сайта в мультисайтинге, и два конфига drupal, соответственно, с одной кодовой базой, базой данных и симлинком между /sites/sitename/files. Если решится проблема с формами и $base_url, это будет работать нормально.

15 декабря 2017 в 17:24

Нашел решение. В файле /sites/default/settings.php требуется прописать:

<?php
$hostsubfolder 
'/subdirectory';
$base_url 'https://site.ru' $hostsubfolder;
$_SERVER['REQUEST_URI'] = $hostsubfolder $_SERVER['REQUEST_URI'];
?>
15 декабря 2017 в 10:12