为什么我的干净 URL 在 Drupal 中不起作用,即使 rewrite_module 存在?

问题描述

嘿伙计们。作为最后的手段,我在这里问这个问题,因为我已经尝试解决这个问题近两天了。

我正在尝试在我的 Drupal Web 应用程序上启用干净的 URL。我访问了几个公开问题,例如this一个,但无济于事。如果这是转帖,我深表歉意。

一些(相关)上下文:

  • 该项目涉及使用 Vagrant 脚本自动设置虚拟机
  • VM 没有 GUI
  • Vagrant 使用 VirtualBox
  • Vagrant 使用 bento/centos-7.9 作为基础框。
  • 每当我需要终端来执行 PS 或 Linux 命令时,我都会在物理设备上使用 WSL

我正在使用以下方法在 VM 上设置 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 warnings top part

Drupal warnings bottom part

我知道另外两个警告,但这些是另一天的担忧。当我不顾警告继续运行时,Apache 加载 index.PHP 就好了:

Screenshot of index.php

但是,当我点击任意按钮时,就会发生这种情况:

Screenshot of yet another problem

我怀疑这是未启用干净网址的结果。但是,据我所知,所有必要的模块都已安装。

到目前为止我尝试过的:

  • /etc/httpd/conf/httpd.conf,尝试所有建议here
  • /etc/httpd/conf/httpd.conf 中,将每个 AllowOverride 选项设置为 All
  • 检查兼容性问题。
  • 移动文档根目录。
  • 更多...

非常感谢您的帮助。提前谢谢了。如果您需要更多信息,我会尽快回复

解决方法

大家好。问题已解决。

不知何故,它突然起作用了。我现在可以浏览网站而不会弹出未找到错误。

我重试了一个以前不起作用的方法,但现在它起作用了。其他任何变量都没有变化。我编辑了 /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>

我从 here 处获得了这些信息。

CLEAN URLS 警告仍然存在:

Drupal warnings top part

但是,尽管有警告,但在继续时似乎没有问题。事实上,在应用程序本身中,导航到错误/警告部分,CLEAN URLS 警告甚至不存在!