.htaccess 文件在 Ubuntu 服务器上被忽略

Don*_*ins 6 apache2

我在.htaccess运行 Apache2 的新安装的 Ubuntu 服务器上遇到文件问题。

服务器加载页面时,不会考虑 WordPress 文件所在目录中的 .htaccess 文件。AllowOverrideapache2.conf 文件中没有声明,但默认为All,如果我包含一个声明,它不会改变任何内容。

我试过.htaccess在一个部分中包含本地文件的内容。我也试过这个:

<Directory /var/www/mydomain.com/html>
AllowOverride All
</Directory>
Run Code Online (Sandbox Code Playgroud)

我还尝试将AllowOverride/etc/apache2/sites-available/default(默认情况下都设置为None)中的所有实例更改为All.

但我没有运气。

不知道如何解决这个问题。

Don*_*ins 9

自从我打开这个线程以来,我弄清楚了它是什么:根据Media Temple 知识库文章(这是我用来设置(ve)服务器)。

首先,它是重写模块。似乎我的.htaccess文件没有被服务器读取,因为必须启用重写模块:这似乎是我刚刚执行的全新安装的默认设置。谁知道?

启用模块非常简单:我只需要创建一个rewrite.load从 mods-available 目录到 mods-enabled 目录的文件的符号链接(在本例中,所有这些都在 apache2 目录中找到/etc/apache2)。

运行以下内容:

cd /etc/apache2/mods-enabled
ln -s /etc/apache2/mods-available/rewrite.load rewrite.load
Run Code Online (Sandbox Code Playgroud)

其次,我得出结论,我还需要将AllowOverridein /etc/apache2/sites-available/defaultNone默认情况下都设置为)的所有实例更改为All(请参阅解释问题的这篇文章)。

最后是如何应用规则的问题。我实际上选择删除我的 .htaccess 文件并将其所有规则放在一个<Directory>部分中http.conf(它现在是一个单独的文件,仍然在 apache2.conf 中调用,我将用它来包含我所有的自定义),因为设置AllowOverrideNone和依赖on apache2.conffor everything 会提高速度,因为服务器.htaccess在加载页面之前不再需要在每个级别检查文件。然后我删除了.htaccess, 设置AllowOverrideNone,并且规则仍然可以正常加载。


Mar*_*ppi 4

这听起来好像 mod_rewrite 没有启用。尝试运行以下命令:

a2enmod rewrite
Run Code Online (Sandbox Code Playgroud)

如果该命令报告重写已启用,请重新启动 Apache,sudo service apache2 restart如果它说它已启用,那么这不是答案:)