如何在Apache中启用mod_rewrite?


164

我刚刚在Ubuntu系统上安装了LAMP堆栈。

重定向对我不起作用。我不知道该如何解决。谁能帮我?


3
恕我直言,这个问题不是Ubuntu特有的,应该迁移到Server Fault
Paolo

2
OP在UBUNTU上安装了Lamp。您还想要多少特定于Ubuntu的?
wojox 2011年

1
@wojov:我不知道这种情况,但是这种说法不起作用。“如何在Ubuntu上使用该应用程序?” 大多是题外话。

23
这不是“如何使用应用程序”,而是“如何在Ubuntu中启用特定功能”。Ubuntu下的Apache使用不同的配置布局,其中每个模块和虚拟主机是一个文件/etc/apache2,可以使用a2*程序启用该文件。
Lekensteyn 2011年

您应该描述自己为缩小问题范围所做的工作
ericn

Answers:


238

要启用它的重写模块,请运行“ apache2 enable module rewrite”:

sudo a2enmod rewrite

您需要重新启动Web服务器以应用更改:

sudo service apache2 restart

如果你打算在使用mod_rewrite .htaccess的文件,你还需要能够使用的.htaccess,通过改变文件AllowOverride NoneAllowOverride FileInfo。对于默认网站,编辑/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
瓦伦丁Despa

谢谢!sudo a2enmod rewriteFileInfo为我修复!
d -_- b

22
对我来说,该文件是/etc/apache2/apache2.conf,在其中我找到了该配置条目
doc_id 2014年

是的,使这两个更改解决了问题。
阿德林

它对我不起作用。我在这里
Suhail Gupta

49

我敢于针对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服务器的根目录更改回good old /wwwopen 000-default.conf并进行更改

DocumentRoot /var/www/html/

DocumentRoot /var/www/

然后当然应该

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

1
感谢信息!这种/新的方式,我们可以将www用作存放所有网站的文件夹,而html默认是本地主机的“ website”。如果您正在向世界开放端口,这可能很重要-这样,您的本地主机就无法看到其他项目的文件夹。
Vladimir Vukanac

1
它对我不起作用。我正在使用 Ubuntu 14.04.4 LTS
Suhail Gupta
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.