Почему мой чистый URL-адрес не работает в Drupal, хотя присутствует rewrite_module?

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

Я пытаюсь включить чистые URL-адреса в своем веб-приложении Drupal. Я посетил несколько общедоступных вопросов, таких как это один, но безрезультатно. Мои искренние извинения, если это репост.

Некоторый (соответствующий) контекст:

  • Проект включает в себя автоматическую настройку виртуальной машины с помощью скрипта Vagrant.
  • Виртуальная машина не имеет графического интерфейса.
  • Vagrant использует VirtualBox.
  • Vagrant использует bento/centos-7.9 в качестве базового блока.
  • Я использую WSL на своем физическом устройстве всякий раз, когда мне нужен терминал для команд PS или Linux.

Я настраиваю стек LAMP на виртуальной машине, используя следующее:

  • CentOS 7.9, как указано выше.
  • Apache 2.4.6, например:

yum -y install httpd

  • MariaDB 10.5.9, например:

wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup

chmod +x mariadb_repo_setup

./mariadb_repo_setup

yum -y install mariadb-server

  • PHP 7.4.16, например:

yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm

yum-config-manager --enable remi-php74

yum -y install php php-mysql

  • Я храню извлеченное содержимое Drupal (index.php, update.php, ядро, сайты...) под /var/www/drupal/. Я предоставил Apache рекурсивное владение этой папкой, чтобы не создавать проблем с настройкой разрешений. В любом случае, это не производственный проект.

  • В файле /etc/httpd/conf/httpd.conf я коснулся только DocumentRoot, которому я присвоил значение DocumentRoot "/var/www/drupal". Я не хочу использовать .htaccess.

  • Когда я запускаю httpd -M | grep rewrite, я получаю выходные данные rewrite_module (shared). Когда я запускаю phpinfo(); на тестовой странице, среди загруженных модулей присутствует mod_rewrite.

Запустив приложение, все идет нормально, и выдается следующий вывод:

Верхняя часть предупреждений Drupal

нижняя часть предупреждений Drupal

Я знаю о двух других предупреждениях, но об этом мы поговорим в другой раз. Когда я продолжаю, несмотря на предупреждения, Apache нормально загружает index.php:

Снимок экрана index.php

Однако в тот момент, когда я нажимаю любую кнопку, происходит следующее:

Снимок экрана с еще одной проблемой

Я подозреваю, что это следствие того, что чистый URL не включен. Однако, насколько я знаю, все необходимые модули установлены.

Что я пробовал до сих пор:

  • В /etc/httpd/conf/httpd.conf попробуйте все, что предложено здесь .
  • В /etc/httpd/conf/httpd.conf установите для каждого параметра AllowOverride значение Все.
  • Проверка на совместимость.
  • Перемещение корня документа.
  • Намного больше...

Помощь будет принята с благодарностью. Спасибо заранее. Если вам потребуется дополнительная информация, я отвечу как можно скорее.


person PietiePoo    schedule 09.03.2021    source источник


Ответы (1)


Привет, ребята. Проблема решена.

Как-то вдруг срабатывает. Теперь я могу перемещаться по веб-сайту без всплывающей ошибки Not Found.

Я повторил метод, который раньше не работал, но теперь он работает. Никаких изменений в других переменных не произошло. Я отредактировал /etc/httpd/conf/httpd.conf. Помимо того, что я уже изменил DocumentRoot на /var/www/drupal, я также добавил еще одну часть конфигурации прямо под этим:

<Directory "/var/www/drupal">
  RewriteEngine on
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^ index.php [L]
</Directory>

Я получил эту информацию из здесь.

Однако предупреждение CLEAN URLS по-прежнему присутствует:

Верхняя часть предупреждений Drupal

Но, похоже, проблем с продолжением, несмотря на предупреждения, не возникает. На самом деле, в самом приложении при переходе к разделу ошибок/предупреждений предупреждения CLEAN URLS даже нет!

person PietiePoo    schedule 15.03.2021