mod_rewrite 规则在虚拟主机上不起作用。我希望 cakephp 也能这样。
是否有需要添加在虚拟主机文件内的设置?
答案1
如果您使用的是最新的 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
存在。如果存在,则表示已启用。
答案2
启用重写使用
# sudo a2enmod rewrite
然后使用以下命令重新启动 apcahe2
# service apache2 restart
通过添加在虚拟主机中启用
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>