学习目的:让url支持 www.dev.com/Public/index.html 这样的形式
(1)前提apache和php已经能用了。
设置apache配置文件
#apache2.4.9\conf\httpd.conf
找到如下一行
#LoadModule rewrite_module modules/mod_rewrite.so
改为(去掉# 符号表示开启(加载)此模块)
LoadModule rewrite_module modules/mod_rewrite.so
<Directory
Options Indexes FollowSymLinks
AllowOverride none
中none 改为 all(允许 htaccess 重写)
AllowOverride all
让 .htaccess 支持需要省略index.php 配置如下
# .htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
</IfModule>
重点句是:RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
RewriteEngine on RewriteEngine On|Off RewriteEngine 用于开启或停用rewrite功能
(2) 还是403 页面 www.dev.com/Public/index.html
而 www.dev.com/index.php/Public/index.html 能正常访问
检查httpd.conf 文件, 发现有下面一段
<Directory />
AllowOverride all
Require all denied
</Directory>
Require all denied(拒绝所有访问)
去掉这句。再次访问,可以正确访问(希望发现问题的人,能一起交流学习)
附上:vhost配置信息
<VirtualHost *:80>
DocumentRoot "D:/code/svn_yilinker/tagwebsys/"
ServerName local.tagwebsys.com
ErrorLog "logs/dummy-local.tagwebsys.com-error.log"
CustomLog "logs/dummy-local.tagwebsys.com-access.log" common
<Directory "D:/code/svn_yilinker/tagwebsys/">
Options Indexes FollowSymLinks
AllowOverride ALL
Order allow,deny
Allow from all
</Directory>
</VirtualHost>