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

我已经激活

LoadModule rewrite_module modules/mod_rewrite.s

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

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

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


当前回答

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

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

现在重新启动apache。

service apache2 reload

希望它有用。

其他回答

我刚刚做了这个

sudo a2enmod rewrite

然后需要执行以下命令重新启动apache服务

sudo service apache2 restart

尝试设置:AllowOverride All。


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

打开终端,输入a2enmod rewrite,它将为Apache启用mod_rewrite模块。

然后进入/etc/apache2/sites-available并编辑默认文件。(为此,您必须对该文件和站点可用文件夹具有可写权限。)

用现有的第4至14行替换下面的内容

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

现在通过/etc/init.重新启动apacheD /apache2 restart或service apache2 restart

再次进行干净的URL测试,这一次它将通过。

在Ubuntu中:

Run:

a2enmod rewrite

然后:

service apache2 restart

Mod_rewrite现在将被启用!

如果没有以上工作尝试编辑/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

这对我很有效