apache rewrite机制
处理伪静态时,用户发送一个伪静态地址。如果apache开启了rewrite模块,则通过这个模块正则这个地址,重写这个静态地址产生对应动态地址,发送给php执行。这样用户看到是静态地址,服务器处理是动态地址。
1、启用rewrite模块 修改httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so
2、启用虚拟主机
修改httpd-vhosts.conf 修改hosts
3、添加设置参数
<Directory "D:/web/test"> 这里面的配置如果没有指定访问权限,则以上级目录的权限为准,如果他自己指定了访问权限,则以自己的为准,可以覆盖上级目录配置
Order allow,deny 先看allow 再看deny 留下的可以访问 顺序重要! 这里指定是否让人访问
Allow from all
Deny from xxip
Options none/indexes 是否目录浏览
配置首页面
DirectoryIndex abc.html bb.html
配置错误页
errorDocument 404 /404.html
errorDocument 403 /403.html
errorDocument 500 /500.html
配置rewrite规则
RewriteEngine On #启用rewrite引擎
#RewriteRule 正则表达式 重写到的网址其中可以反应用$1-$n引用前面正则的数据
RewriteRule news-([a-zA-Z])+-id(\d+)\.html$ news.php&type=$1&id=$2
是否启用.htaccess文件
AllowOverride None/All
</Directory>
Directory配置节点,用于指定该目录下的文件或是图片的访问权限,设置虚拟主机的错误页面,欢迎页面
4、最后处理修改httpd-vhosts.conf,还可以直接在网站目录添加.htaccess文件,修改此文件无需重启apache
<ifModule rewrite_module>#查看是否已加载此模块
RewriteEngine On #启用rewrite引擎
#RewriteRule 正则表达式 重写到的网址其中可以反应用$1-$n引用前面正则的数据
RewriteRule news-([a-zA-Z]+)-id(\d+)\.html$ news.php?type=$1&id=$2 #可以多写 正则自上向下
RewriteRule anews-([a-zA-Z]+)-id(\d+)\.html$ news.php?type=$1&id=$2
</ifModule>
errorDocument 404 /404.html
.htaccess 文件对所在目录以及其子目录有效,其子目录如果有.htaccess 文件自动覆盖父目录,继承管理
本文来自博客园,作者:Caps,转载请注明原文链接:https://www.cnblogs.com/caps/archive/2013/03/05/2943645.html