启用 .htaccess 文件重写路径(不起作用)

inC*_*rol 22 apache2 mod-rewrite .htaccess

所有的教程都告诉我编辑:/etc/apache2/sites-available/default但这个文件对我来说不存在。在这个文件中,我必须编辑:

<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
#AllowOverride All
#AllowOverride AuthConfig FileInfo Indexes Limit Options=All, MultiViews        
Order allow,deny
allow from all </Directory>
Run Code Online (Sandbox Code Playgroud)

文件应该是什么样的,我应该自己创建吗?

Aslo我确实有一个000-default.conf文件,但上面的“代码”也不在那里。

Nab*_*bil 70

对于 apache 2.4 及更高版本,你必须去

/etc/apache2/apache2.conf

您必须编辑该文件(您应该具有 root 权限)。像这样更改目录文本;

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
Run Code Online (Sandbox Code Playgroud)

现在重启apache。

service apache2 restart
Run Code Online (Sandbox Code Playgroud)

希望它有效。

  • 这里重要的一行是 `AllowOverride All`,这意味着可以在 `.htaccess` 文件中设置(覆盖)所有设置。见文档:https://httpd.apache.org/docs/2.4/mod/core.html#allowoverride (3认同)
  • 如果它仍然不起作用,请尝试“sudo a2enmod rewrite”,然后“sudo service apache2 restart”,这对我有用。 (3认同)

小智 26

如Ubuntu的14.04(和Apache 2.4),默认的DocumentRoot从改变/var/www/var/www/html

首先启用 a2enmod 并重新启动 Apache。

sudo a2enmod rewrite 
Run Code Online (Sandbox Code Playgroud)

然后编辑000-default.conf文件

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

并在最后添加这些行

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

最后重启Apache使配置生效。

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

  • 这个解决方案对我有用,因为我需要先启用 mod_rewrite。非常感谢。 (2认同)

zat*_*ine 9

如果您不想在每次升级/更新时重复相同的配置

最好的方法是:

编辑或创建配置文件

/etc/apache2/conf-available/httpd.conf

添加

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

启用配置文件

sudo a2enconf httpd

重新启动或重新加载 Apache

sudo service apache2 restart

或者

sudo service apache2 reload

完成!