如何在Apache中启用mod_rewrite?

我刚在我的Ubuntu系统上安装了LAMP堆栈。
重定向对我来说不起作用。我不知道如何修复它。有人可以帮助我吗?

3在我看来,这个问题并不特定于Ubuntu,应该迁移到Server Fault - Paolo
2OP在Ubuntu上安装了Lamp。你还想要多么适合Ubuntu的特定内容? - wojox
1@wojov:我不了解这个案例,但那个论点并不成立。“我如何在Ubuntu上使用这个应用程序?”大多数情况下都是不相关的话题。 - user13032
23这不是一个“如何使用应用程序”的问题,而是一个“如何在Ubuntu中启用特定功能”的问题。在Ubuntu下,Apache使用了不同的配置布局,其中每个模块和虚拟主机都是/etc/apache2目录中的一个文件,并且可以使用a2*程序来启用。 - Lekensteyn
你应该描述一下你为了缩小问题范围所做的工作。 - ericn
2个回答

要启用重写模块,请运行“apache2 enable module rewrite”命令。
sudo a2enmod rewrite

你需要重新启动Web服务器以应用更改:
sudo service apache2 restart

如果您计划在.htaccess文件中使用mod_rewrite,您还需要通过将AllowOverride None更改为AllowOverride FileInfo来启用.htaccess文件的使用。对于默认网站,请编辑/etc/apache2/sites-available/default文件。
    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            # changed from None to FileInfo
            AllowOverride FileInfo
            Order allow,deny
            allow from all
    </Directory>

在这样的更改之后,你需要再次重启 Apache。


18我在使用AllowOverride All时取得了更多的成功。 - Valentin Despa
谢谢!sudo a2enmod rewriteFileInfo对我有帮助! - d-_-b
23对我来说,那个文件是/etc/apache2/apache2.conf,在那里我找到了配置项。 - doc_id
是的,对这两个改变进行修正解决了问题。 - Adelin
这对我来说不起作用。我在这里发布了一个问题 http://askubuntu.com/questions/809619/failing-to-rewrite-url - Suhail Gupta

我敢在上面的出色回答之后补充一个特别的答案,关于ubuntu 14.04和.htaccess:
在14.04中,默认配置文件的名称已更改为000-default.conf:
sudo gedit /etc/apache2/sites-available/000-default.conf

将以下内容添加到文件末尾:
<Directory "/var/www/html">
    AllowOverride All
</Directory>

由于某种原因,在Ubuntu 14.04和apache2中,根目录被设置为/www/html。如果你想将Web服务器的根目录改回传统的/www,请打开000-default.conf并进行修改。
DocumentRoot /var/www/html/

DocumentRoot /var/www/

然后当然应该是

<Directory "/var/www">
    AllowOverride All
</Directory>

1谢谢信息!这种新的方式可以让我们把www作为文件夹来使用,将所有网站放在其中,html默认成为本地主机的“网站”。如果您正在尝试打开与世界通信的端口,则此方法可能非常重要-以此方式,您的本地主机无法看到其他项目的文件夹。 - Vladimir Vukanac
1它对我来说不起作用。我正在使用 Ubuntu 14.04.4 LTS - Suhail Gupta