http://www.rockbb.com/blog/?p=319

http://www.cnblogs.com/scgw/archive/2011/12/10/2283029.html

我的理解:当浏览器发送一个请求到服务器请求一个资源的时候,比如 http://localhost/user/13 ,我们的web服务器---这里是Apache服务器,接收到这个请求,就会去判断

这个资源在我们的服务器上到底有没有。但在这之前呢,我们的 Apache 可以对这个请求的URL 进行一个转换 http://localhost/user/id ---->http://localhost/index.php/user/13 ,对吧,转换后的这个路径才是正确的。那怎么实现这种转换呢,就需要用到Apache 的Rewrite模块了

RewriteEngine on //重写引擎打开,否则下面这几天指令无效

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f // RewriteCond 配合RewriteRule使用,这连个RewriteCond都成立的话,才会执行下面这条 “替换”
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d //第一条表示请求的资源不是文件,第二条表示请求的资源不是目录
RewriteRule ^(.*)$ /index.php/$1

  上面RewriteCond ,表示重写条件(相当于我们程序的if(condition){if(condition){ rewriteRule}}),注意我这里

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f 加了%{DOCUMENT_ROOT},这是应为我的这个配置是写在httpd.conf中的(或是httpd-vhosts.conf)中的,这里面
的重写路径是相对路径,这不同于 .htaccess中的,如果是写在.htaccess中的话 ,则是会自动带上 DOCUMENT_ROOT这个路径的地址。注意这里很可能会出错,可能就是少了 %{DOCUENT_ROOT}. 这里,我的网站呢根目录(即http://localhost/)对应的是 webroot 这个文件夹

看url地址:  http://localhost/dbuser/getList  --->在apache 中会重写为 http://localhost/index.php/dbusers/geList
       http://localhsot/user/ (我的webroot/user/这个目录下有一个index.html文件,这个的我的主文件,这里user/目录下其实是我的一个AngularJS 的单页面应用程序,即SPA了) ,在Apache中就不会重写了, 访问返回的就是 http://localhost/user/index.html (忘了说,我的配置中还有这么一条 DirectoryIndex index.html index.php,这个是默认主页)
现在
。。
Summary : 注 webroot/index.php index.php我们网站后台的入口地址是在webroot/这个目录下面的。
经过这条简单的重写,就实现了我的项目文件的目录结构的部署问题。 我的前端页面都是放在 /webroot/user/下面的。主页面是该目录下的 index.html 。这是一个Angular 应用,然后通过
ajax请求访问服务端的数据,返回JSON格式的数据,Anjular操作DOM,双向数据绑定。 Ajax请求的路径都类似于 http://localhost/dbusers/getlist ,而这种路径都会解析成
http://localhost/index.php/dbusers/getLIst这就会进入我们后台的系统了(index.php就是我们后台的主入口文件,我们后台用的是PHP 的开源的MVC框架)。这样就实现了比较优雅的前后端分离了。后台知识提供API(数据的接口,并不生存HTML的视图),所有的视图都是放在 webroot/user/目录下,静态的资源 视图 html就完全放到前端,和后台分离了。这就比较接近 RESTful的软件架构风格了。

apache RewriteCond RewriteRule的更多相关文章

  1. Apache RewriteCond RewriteRule 入门和Laravel去掉index.php

        Ci删除index.php办法: 创建.htaccess 文件放到网站的根目录下,文件中的内容如下: RewriteEngine onRewriteCond %{REQUEST_FILENAM ...

  2. Apache中 RewriteRule 规则参数介绍

    Apache中 RewriteRule 规则参数介绍 摘要: Apache模块 mod_rewrite 提供了一个基于正则表达式分析器的重写引擎来实时重写URL请求.它支持每个完整规则可以拥有不限数量 ...

  3. .htaccess 基础教程(四)Apache RewriteCond 规则参数

    Apache模块 mod_rewrite 提供了一个基于正则表达式分析器的重写引擎来实时重写URL请求.它支持每个完整规则可以拥有不限数量的子规则以及附加条件规则的灵活而且强大的URL操作机制.此UR ...

  4. Apache的RewriteRule规则详细介绍

    R[=code](force redirect) 强制外部重定向 (rkyW z强制在替代字符串加上http://thishost[:thisport]/前缀重定向到外部的URL.如果code不指定, ...

  5. apache url rewrite 的RewriteRule参数详解

    apache url rewrite 的RewriteRule参数详解 我们经常会在apache那边对一些url进行一些重写操作,那么就会涉及到很多的重写策略的选择,比如重定向的方式,参数的处理,规则 ...

  6. Apache之Rewrite和RewriteRule规则梳理以及http强转https的配置总结

    一. 简单实例介绍一般来说,apache配置好http和https后,如果想要做http强转到https,需要设置url重定向规则,大致需要下面几个步骤即可完成配置: 1)在httpd.conf文件里 ...

  7. .htaccess 基础教程(三)RewriteCond标志符,RewriteRule适用的标志符

    1.利用 .htaccess 防止盗链 如果不喜欢别人在他们的网页上链接自己的图片.文档的话,也可以通过htaccess的指令来做到.当然这样也可以对你的网站服务器压力变小! 这次先给出‘代码’,然后 ...

  8. apache禁止访问文件或目录执行权限、禁止运行脚本PHP文件的设置方法

      <Directory "要去掉PHP执行权限的目录路径,例如:D:/piaoyun.cc/upload"> ErrorDocument 404 /404/404.h ...

  9. Apache之AllowOverride参数详解

    通常利用Apache的rewrite模块对 URL 进行重写的时候, rewrite规则会写在 .htaccess 文件里.但要使 apache 能够正常的读取.htaccess 文件的内容,就必须对 ...

随机推荐

  1. CSS3的box-sizing属性

    盒模型的宽度,在 IE5.x 以及 Quirks 模式的 IE6/7 中,将 border 与 padding 都包含在 width 之内 W3C标准中的盒模型宽度为内容宽度,不包括内边距paddin ...

  2. php错误记录

    1.模板不存在ThinkPHP\Library\Think\View.class.php LINE: 110 是因为IndexController的Index函数,而View中没有对应的Index文件 ...

  3. C语言_数字排列顺序

    #include <stdio.h> #include <stdlib.h> #define LENGTH 8 void main() { , , , , , , , }; ; ...

  4. 《Windows驱动开发技术详解》之读写操作

    缓冲区方式读写操作 设置缓冲区读写方式:

  5. android动态添加TextView或者ImageView

    动态添加 text1=new TextView(this); text1.setText("动态添加"); ((LinearLayout) this.findViewById(R. ...

  6. iOS 协同开发出fatal error: file 'XX-Prefix.pch' has been modified since the precompiled header was built

    http://blog.sina.com.cn/s/blog_6f8ed1b90101ake6.html 解决方法 1)http://stackoverflow.com/questions/14793 ...

  7. 老鸟需要知道的一些php系统类函数

    作为一个老手级别的php程序员,知道下面几个php系统级别的函数,不足为多吧!获取系统信息和调试程序的时候应该能用的上! PHP系统类函数 assert函数:检查assertion声明是否错误 ext ...

  8. 批量删除实现js+springmvc

    前台的控件 <input type='checkbox' name='isSelect' value='"+data[i].id+"' ></input>& ...

  9. Git Server和sourceTree客户端使用说明

    一.创建本地仓库 新建一个文件夹,命名为LocalRep,来作为本地仓库. 在终端 cd+拖拽文件夹到终端,打开文件夹在LocalRep目录下操作clone远程仓库到本地,指令如下所示(需根据实际情况 ...

  10. addEventListener与removeEventListener

    addEventListener:添加事件监听器 element.addEventListener(event, function, useCapture) event:事件类型,字符串,不要加&qu ...