Mod_Rewrite其实就是大家常说的伪静态了,下面我来介绍apache中怎么打开伪静态功能与怎么利用.htaccess来实现重写url。
首先确认你已经开启服务器的路由重写模块,如果不确认,请在httpd.conf文件中查找如下代码,并将前面的#符号删除,重启服务器,即开启了重写模块
第一步:找到apache的配置文件httpd.conf(文件在conf目录下)
第二步:你首先必须得让服务器支持mod_rewrite,如果你使用的是虚拟主机,请事先询问你的主机提供商。
打开httpd.conf,找到 #LoadModule rewrite_module modules/mod_rewrite.so 把#去掉。
找到AllowOverride None 改成 AllowOverride All。
注:AllowOverride 的参数设置为ALL,表示整台服务器上都支持URL规则重写。Apache 服务器要读每个网站下目录下的 .htaccess 文件。如果没有这个文件,或者这个文档没有定义任何关于URL重写的规则就不会有任何效果。
对于不同的网址,需要在APACHE中增加如下内容:
- <Directory “E:/Apache Group/Apache2/htdocs/leapsoul”>
-
- Options FollowSymLinks AllowOverride None
- </Directory>
第三步:重启apache服务器,先按stop再start。
第四步:在你需要URL重写的网站目录下放一个.htaccess文件,文件名是.htaccess,Windiws下不能直接建立,你可以用记事本另存为。
注:我测试的时候在每个需要伪静态的目录下都存放了对应的.htaccess文件,同时在httpd.conf文件中像第二步那样对相关的目录添加了相应的<Directory>..</Directory>代码。
第五步:在.htaccess中通过正则表达式映射需要伪静态的页面。然后在你的网站配置中加入下面代码:
- RewriteEngine on
- RewriteRule index.html index.php
- RewriteRule (d+).html$ info.php?infoid=$1
然后重启apache现在我们就可以如:
index.html访问就是index.php, 页1.html访问的就是info.php?infoid=1哦,这就是为静态了。
.htaccess做法
.htaccess文件,添加如下代码
- # rewrite规则
- RewriteEngine on
- RewriteCond %{REQUEST_FILENAME} !-f#这里将除了实际文件以为的所有其他请求都指向下行代码给出的脚本,这里是index.php
- RewriteRule .* index.php
在windows下无法直接创建 .htaccess文件,请注意前面有“点号”
很奇怪,在 Windows 资源管理器里面不允许你建立 .htaccess 这样只有扩展名的文件。所以你必须先将文件保存为其他名字,例如 app.htaccess。然后进入命令行窗口(通过开始菜单运行 cmd.exe 程序即可),输入 ren a.htaccess .htaccess 命令来对文件改名。或者新建一个记事本,另存为.htaccess 即可 |