• 技术文章 >php教程 >php手册

    .htaccess文件玩转Rewrite

    2016-06-21 08:51:29原创311
    刚玩网页的时候,写的都是静态页 http://uicss.cn/about.htm 这样的结构。
    后来想换成 http://uicss.cn/about/
    但是又因为不熟悉rewrite,做了如下的调整,手动建立了一堆的文件夹:

    这样的目录结构,维护起来相当麻烦。每次新加一个页面,都要开一个文件夹。
    其实采用左边那套结构部署上去,服务器稍做设置,就可以支持我们想要的URL效果。

    如何玩 rewrite

    首先看看自己的服务器是否支持 .htaccess
    如果支持这货,就不用每次写条规则就重启一次服务器了,便于测试。

    redirect 301 /test.htm http://uicss.cn/

    成功的话,当你访问 xxx.com/test.htm 的时候,会自动跳到我的博客。
    不成功的话,需要开启一下 .htaccess :

    1. 打开 \conf\httpd.conf ,查找 #LoadModule rewrite_module,将#号去掉,加载该模块
    2. 打开 \conf\extra\httpd-vhosts.conf ,查找 AllowOverride None,将 None 变更为 All

    环境准备完成后,还需要对“模式匹配”中特殊字符在rewrite的解读做一下了解:

    * 代表前面0或更多个字符
    + 代表前面1或更多个字符
    ? 代表前面0或1个字符
    ^ 代表字符串的开始位置
    ^ 在方括号里代表“非”,例如[^/]代表非斜杠。
    $ 代表字符串结束的位置
    . 代表任何字符(也就是通配符)
    \ 取消后面字符的特殊意思,转为原义字符。
    —— 这部分的理解出自《SEO艺术》第六章末

    开始干吧,打开.htaccess的rewrite
    RewriteEngine on

    把 xxx.htm 文件 替换为 xxx/
    RewriteRule ^(.*)\/$ /$1.htm [L]

    再给一个例子加深理解,这是将服务器上的 xxx.php 文件 替换成 xxx.html
    RewriteRule ^(.*)\.html$ /$1.php [L]

    更多用法:

    让所有访问 www.uicss.cn/xxx/ 的用户 跳转到 uicss.cn/xxx/
    RewriteCond %{HTTP_HOST} ^www.uicss.cn [NC]
    RewriteRule ^(.*)$ http://uicss.cn/$1 [L,R=301]

    对指定目录开启转向的代码:
    RewriteBase /top/

    带搜索参数的转向:
    RewriteRule ^search/(.+)?$ /index.php?s=$1 [QSA,L]

    目录末尾补斜线:
    RewriteRule ^(.+[^/])$ /$1/ [R]



    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:jpgraph+php+mysql生成柱状图(含附件) 下一篇:Android访问php取回json数据
    20期PHP线上班

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• php生成缩略图类,支持自定义高和宽。还支持按高和宽截图• 第十二节--类的自动加载--ClassesandObjectsinPHP512• PHP基本语法第一章• Sajax融合服务器端的PHP和JS• 谈PHP闭包特性在实际应用中的问题(1)
    1/1

    PHP中文网