.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 中调用,我将使用它来包含我的所有自定义),因为设置AllowOverride
为None
并依赖apache2.conf
于所有内容会提高速度,因为服务器不再需要.htaccess
在加载页面之前在每个级别检查文件。然后我删除了.htaccess
,设置AllowOverride
为None
,规则仍然可以正常加载。
答案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 重新启动