![Ubuntu 服务器上忽略了 .htaccess 文件](https://linux22.com/image/1298257/Ubuntu%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E5%BF%BD%E7%95%A5%E4%BA%86%20.htaccess%20%E6%96%87%E4%BB%B6.png)
.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 中调用,我将使用它来包含我的所有自定义),因为设置AllowOverride
为None
并依赖apache2.conf
于所有内容会提高速度,因为服务器不再需要.htaccess
在加载页面之前在每个级别检查文件。然后我删除了.htaccess
,设置AllowOverride
为None
,规则仍然可以正常加载。