如何在 Apache 中启用 mod_rewrite?

vin*_*oth 170 apache2

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

重定向对我不起作用。我不知道如何修复它。谁能帮我?

Lek*_*eyn 246

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

sudo a2enmod rewrite
Run Code Online (Sandbox Code Playgroud)

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

sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)

如果您计划在.htaccess文件中使用 mod_rewrite ,您还需要.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>
Run Code Online (Sandbox Code Playgroud)

进行此类更改后,您需要再次重新启动 Apache。

  • 对我来说,那个文件是 /etc/apache2/apache2.conf 在那里我找到了那个配置条目 (23认同)
  • 我在 AllowOverride All 上取得了更大的成功 (18认同)

dav*_*rad 50

我敢于添加一个关于ubuntu 14.04的特别答案(作为上述伟大答案的后续)和.htaccess

在 14.04 中,默认配置文件的名称更改为000-default.conf

sudo gedit /etc/apache2/sites-available/000-default.conf
Run Code Online (Sandbox Code Playgroud)

将以下内容添加到文件末尾:

<Directory "/var/www/html">
    AllowOverride All
</Directory>
Run Code Online (Sandbox Code Playgroud)

出于某种原因,在 Ubuntu 14.04 和 apache2 中,根设置为/www/html. 如果你想把 webserver root 改回旧的/wwwopen 000-default.conf然后改变

DocumentRoot /var/www/html/
Run Code Online (Sandbox Code Playgroud)

DocumentRoot /var/www/
Run Code Online (Sandbox Code Playgroud)

然后当然应该是

<Directory "/var/www">
    AllowOverride All
</Directory>
Run Code Online (Sandbox Code Playgroud)