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

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

答案2

这听起来像是 mod_rewrite 未启用。尝试运行以下命令:

a2enmod rewrite

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

答案3

确保以下事项:

/etc/apache2/apache2.conf

#
# AccessFileName: The name of the file to look for in each directory
# for additional configuration directives.  See also the AllowOverride
# directive.
#

AccessFileName .htaccess

#
# The following lines prevent .htaccess and .htpasswd files from being 
# viewed by Web clients. 
#
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy all
</Files>

Ubuntu - HTTPD - Apache2 Web 服务器可能会有帮助。

- 编辑 -

  • 对 .conf 文件的更改不会立即生效,始终需要重新启动。重新加载也可能有效,但我不确定在哪些情况下重新加载是不够的。

    /etc/init.d/apache2 重新启动

相关内容