通过apache的 rewrite机制来实现.

通过apache的  rewrite机制来实现.
1.检测Apache是否支持mod_rewrite
通过php提供的phpinfo()函数查看环境配置,通过Ctrl+F查找到“Loaded Modules”,其中列出了所有
apache2handler已经开启的模块,如果里面包括“mod_rewrite”,则已经支持,不再需要继续设置。
 
如果没有开启“mod_rewrite”,则打开目录 您的apache安装目录“/apache/conf/” 下的 httpd.conf 文
件,通过Ctrl+F查找到“LoadModule rewrite_module”,将前面的”#”号删除即可。
 
如果没有查找到,则到“LoadModule” 区域,在最后一行加入“LoadModule rewrite_module modules/mod_rewrite.so”(必选独占一行),然后重启apache服务器即可。
2、在httpd.conf中配置虚拟主机
# Virtual hosts 启用虚拟主机
Include conf/extra/httpd-vhosts.conf
3.httpd_vhosts.conf文件中,配置相应的选项.详细讲解
<VirtualHost *:80>
    DocumentRoot "C:/myenv/apache/htdocs/static3"
    ServerName www.hsp.com
    <Directory "C:/myenv/apache/htdocs/static3">
#Deny from All 403错误提示
Allow from All
#如果文件目录在apache目录外面,注释掉optinos 则,不能列表.
options +Indexes
#下面这个表示可以去读取 .htaccess文件,也可以直接在虚拟主机中配置.
Allowoverride All
RewriteEngine On
RewriteRule news-id(\d+).html$ error.php?id=$1
#这里可以设置多个重写的规则
#RewriteRule news-id.html$ error.php
    </Directory>
 </VirtualHost>
4.在相应的目录下编写.htaccess 重写规则
 
如果在linux下可以直接创建,
如果是在windows平台下,用记事本创建一个文件,比如abc.txt,然后另存
为 .htaccess文件即可
在相应的目录下编写.htaccess 重写规则
<IfModule rewrite_module>
RewriteEngine On
RewriteRule news-id(\d+).html$ show.php?id=$1
#这里可以设置多个重写的规则
#RewriteRule news-id.html$ error.php
</IfModule>
l
5.重写规则,也可以直接在配置虚拟主机的<Directory>段配置.
*************.htaccess文件写法*****
你的.htaccess文件放在index.php文件的同一级目录下即可生效,比如
/static2/.htaccess 目录下,访问 http://localhost/static2/view-23.html 时,就会被apache认为是  http://localhost/static2/index.php?action=view&
id=23
如果在 /static2/kk/.htaccess 有.htaccess文件,当 访问 http://localhost/static2/kk/view-23.html 会执行/static2/kk/.htaccess文件 去找 /static2/kk/index.php?action??
如果在 /static2/kk/.htaccess 没有 .htaccess文件, 当访问 http://localhost/static2/kk/view-23.html  任然执行 /static2/.htaccess文件去找
/static2/index.php?action?????
 
RewriteEngine on
RewriteRule ([a-zA-Z]{1,})-([0-9]{1,})\.html$ index.php?action=$1&id=$2 
([a-zA-Z]{1,})-([0-9]{1,})\.html$是规则,index.php?action=$1&id=$2是要替换的格式,$1代表第一个括号匹配的值,$2代表第二个,如此类推!!
*******index.php测试文件的写法****
<?php
echo ‘你的Action是:’ . $_GET['action'];
echo ‘<br/>’;
echo ‘你的ID是:’ . $_GET['id'];
?>
好了,我们现在在浏览器中输入:
localhost/view-12.html
输出的是:
你的Action是:view
你的ID是:12
 
 
posted @ 2013-11-23 11:04  Beyond it  阅读(171)  评论(0)    收藏  举报