我已经在我的Vista机器上安装了新的Apache 2.2,一切都很好,除了mod重写。

我已经激活

LoadModule rewrite_module modules/mod_rewrite.s

但我的重写规则都没用,即使是像这样简单的

RewriteRule not_found %{DOCUMENT_ROOT}/index.php?page=404

我使用的所有规则都在我的主机上工作,所以他们应该是好的,所以我的问题是,在apache配置中有任何隐藏的东西,可以阻止mod重写?


当前回答

尝试设置:AllowOverride All。


第二个最常见的问题是没有启用mod重写:a2enmod重写,然后重新启动apache。

其他回答

如果没有以上工作尝试编辑/etc/apache2/sites-enabled/000-default

几乎在顶部你会发现

<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>

将AllowOverride None更改为AllowOverride All

这对我很有效

为了使用mod_rewrite,你可以在终端输入以下命令:

sudo a2enmod rewrite

之后重新启动apache2

sudo /etc/init.d/apache2 restart

or

sudo service apache2 restart

或按新的统一系统控制方式

sudo systemctl restart apache2

然后,如果您愿意,您可以使用下面的.htaccess文件。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>

上面的.htaccess文件(如果放在DocumentRoot中)将把所有流量重定向到DocumentRoot中的index.php文件,除非该文件存在。

假设你有如下的目录结构,httpdocs是DocumentRoot

httpdocs/
    .htaccess
    index.php
    images/
        hello.png
    js/
        jquery.js
    css/
        style.css
includes/
    app/
        app.php

任何存在于httpdocs中的文件都将使用上面所示的.htaccess提供给请求者,然而,其他所有文件将被重定向到httpdocs/index.php。include /app中的应用程序文件将无法访问。

新的apache版本在某些方面有所改变。如果你的apache版本是2.4,那么你必须去/etc/apache2。将会有一个名为apache2.conf的文件。你必须编辑它(你应该有根权限)。像这样更改目录文本

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

现在重新启动apache。

service apache2 reload

希望它有用。

如果你知道问题的根源,有很多方法可以解决这个问题。

问题1

首先,这可能是apache没有安装或启用mod_rewrite.c模块的问题。

因此,您必须按如下方式启用它

打开控制台,输入以下内容: Sudo a2enmod重写 重新启动apache服务器。 Service apache2 restart

问题2

除此之外,如果它不起作用,您还可以更改apache conf文件(apache2.conf, http.conf或000-default文件)的覆盖规则。 查找目录/var/www/ 将“Override None”更改为“Override All”

问题3

如果你得到一个错误说重写模块没有找到,那么可能是你的userdir模块 未启用。因此,您需要启用它。

在控制台中输入以下内容: Sudo a2enmod userdir 然后尝试启用重写模块,如果仍然未启用(如上所述)。

欲了解更多信息,请访问该网站:http://seventhsoulmountain.blogspot.com/2014/02/wordpress-permalink-ubuntu-problem-solutions.html

在我的情况下,我必须

RewriteEngine On

在我的。htaccess中,随着模块被加载,它不工作。

我的问题的解决方案是编辑我的vhost条目包括

AllowOverride all

在<Directory>节中查找该站点。