Ubuntu 服务器上忽略了 .htaccess 文件

Ubuntu 服务器上忽略了 .htaccess 文件

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

服务器加载页面时不会考虑 WordPress 文件所在目录中的 .htaccess 文件。apache2.confAllowOverride文件中没有语句,但默认值为All,如果我添加一个,它不会改变任何内容。

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

<Directory /var/www/mydomain.com/html>
AllowOverride All
</Directory>

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

但我的运气不太好。

不确定如何解决这个问题。

答案1

您需要确保 mod_rewrite 已启用:

sudo a2enmod rewrite

然后重启apache

答案2

自从我打开这个帖子以来,我就知道是什么问题了:有两个问题我原以为会出现在任何按照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

其次,我得出结论,我还需要将所有实例AllowOverride(默认情况/etc/apache2/sites-available/default下都设置为None)更改为All(参见本文这解释了这个问题)。

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

相关内容