mod_rewrite规则在虚拟主机上不起作用。我想要这个作为cakephp。
是否在虚拟主机文件中添加设置?
mod_rewrite规则在虚拟主机上不起作用。我想要这个作为cakephp。
是否在虚拟主机文件中添加设置?
Answers:
如果您使用的是最新的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
存在。如果存在,则启用它。
启用重写使用
# 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>
apache2.conf
并重新启动apache
404之后消失了,但是所有页面都重新回到了首页上!phpinfo()
也没有mod_rewrite
启用模块。然后运行CLI commnd(如下面的Lonston所建议),一切都变得顺利了!为什么此解决方案没有mod-rewrite
为我启用模块,而是为CLI启用了?这是.conf
一次又一次地修改和运行CLI命令以启用该模块的组合,或者这两种方法实际上就足够了吗?