为你的Apache服务器开启rewrite功能
rewrite时下很火爆,能提供很多实用功能.Apache安装后默认是不支持rewrite的,可以按照下面的方法启用:
首先确保网站目录支持.htaccess,然后加载Rewrite模块即可.
在httpd.conf中找到Directory设置,如
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
把你想开启.htaccess的目录AllowOverride设置为All.
找到LoadModule rewrite_module modules/mod_rewrite.so
去掉签名的”;”号,开启Rewrite功能.
也可加上下面这句:AddModule mod_rewrite.c
OK了!
测试你的服务器是否支持rewrite功能,将下面的代码保存为.htaccess文件,上传到网站任一目录下.
访问该目录下的任意内容,如果浏览器跳转到了我的博客首页,恭喜你!你的服务器成功支持rewrite.
- Options -Indexes
- <IfModule mod_rewrite.c>
- RewriteEngine on
- RewriteBase /
- RewriteRule .*$ http://www.zhouliang.name
- </IfModule>
最近在研究Symfony框架时,发现它示例中的rewrite规则写的很有代表性,就帖出来,供大家参考.
Symfony使用的rewrite及简单说明:
- #+FollowSymLinks 开启符号链接,使浏览器有可能访问文档根目录(DocumentRoot)之外的文档
- #+ExecCGI 允许这个目录下可以执行CGI程序
- Options +FollowSymLinks +ExecCGI
- #条件判断,如果服务器支持rewrite功能就执行里面的代码,否则跳过.
- <IfModule mod_rewrite.c>
- #开启重写引擎
- RewriteEngine On
- #跳过所有非html后缀的文件
- RewriteCond %{REQUEST_URI} /..+$
- RewriteCond %{REQUEST_URI} !/.html$
- RewriteRule .* - [L]
- #为所有无后缀的访问添加html后缀,并检测这个html文件是否存在
- RewriteRule ^$ index.html [QSA]
- RewriteRule ^([^.]+)$ $1.html [QSA]
- RewriteCond %{REQUEST_FILENAME} !-f
- #文件不存在,重写到index.php
- RewriteRule ^(.*)$ index.php [QSA,L]
- </IfModule>
- # 如果symfony程序出现内部500错误,则显示下面的提示信息
- ErrorDocument 500 "<h2>Application error</h2>symfony applicationfailed to start properly"