如何为虚拟主机启用mod_rewrite


8

mod_rewrite规则在虚拟主机上不起作用。我想要这个作为cakephp。

是否在虚拟主机文件中添加设置?

Answers:


21

如果您使用的是最新的Apache 2.4+版本,那么以下是启用mod_rewrite的过程。使用您喜欢的文本编辑器

转到“ etc/apache2/
打开” apache2.conf
更改

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

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

然后保存。请记住,您应该具有root权限才能编辑和保存此文件。
现在重新启动apache。

service apache2 reload

此过程将为包括虚拟主机的apache服务器启用mod_rewrite。

您还可以检查它是否已启用。创建一个PHP脚本

<?php    
phpinfo();    
?>

从服务器加载它。在Loaded Modules部分下检查是否mod_rewrite存在。如果存在,则启用它。


在使用此选项之前,我所有的重写都以404结尾,但是在更新apache2.conf并重新启动apache404之后消失了,但是所有页面都重新回到了首页上!phpinfo()也没有 mod_rewrite启用模块。然后运行CLI commnd(如下面的Lonston所建议),一切都变得顺利了!为什么此解决方案没有mod-rewrite为我启用模块,而是为CLI启用了?这是.conf一次又一次地修改和运行CLI命令以启用该模块的组合,或者这两种方法实际上就足够了吗?
Niladri Sarkar

6

启用重写使用

# sudo a2enmod rewrite

然后使用以下命令重新启动apcahe2

# service apache2 restart

通过添加在Virtualhost中启用

AllowOverride FileInfo

然后使用以下命令重新启动apcahe2

# service apache2 restart

例如

<Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            # I Have below line from none to FileInfo
            AllowOverride FileInfo
            Order allow,deny
            allow from all
    </Directory>

这也对我有用!
Niladri Sarkar
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.