因为之前使用Yii2.0进行一些开发工作,但是开发初期遇到了不少问题,其中一个就是关于Apache的虚拟主机中如何设置改写规则。
因为改写规则需要写在<Directory>...</Directory>
之间,但是配置在$path/Apache2/extra/httpd-vhosts.conf
中是以如下格式配置的:
1 2 3 4 5 6 7
| <VirtualHost *:80> DocumentRoot "/Users/user_name/Sites" ServerName mysites ErrorLog "/private/var/log/apache2/dummy-host.example.com-error_log" CustomLog "/private/var/log/apache2/dummy-host.example.com-access_log" common </VirtualHost>
|
那么添加改写规则则是在<VirtualHost>
中加入<Directory>
规则:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <VirtualHost *:80> ServerName blog.com DocumentRoot "/Users/user_name/Sites/blog/frontend/web" <Directory "/Users/user_name/Sites/blog/frontend/web"> # 开启 mod_rewrite 用于美化 URL 功能的支持(译注:对应 pretty URL 选项) RewriteEngine on # 如果请求的是真实存在的文件或目录,直接访问 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # 如果请求的不是真实文件或目录,分发请求至 index.php RewriteRule . index.php
# ...其它设置... </Directory> </VirtualHost>
|
需要注意的是,还需要到$path/apache2/httpd.conf
中开启mod_rewrite
功能(把前面的#去除掉,#代表注释该行代码)。