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. 在textarea的内容后面增加内容

    document.getElementById("result").value+=data+"\n>"; 本文为本人用来记录自己做的一些东西,如有不对的地 ...

  2. java 图形界面 mvc模式控制

    使用模型-视图-控件结构来开发GUI程序. 下面的程序演示了MVC模式开发的java程序. 其中CircleModel为模型,包含了圆的半径,是否填充,等属性. CircleView为视图,显示这个圆 ...

  3. CodeFroces--Good Bye 2016-B--New Year and North Pole(水题-模拟)

    B. New Year and North Pole time limit per test 2 seconds memory limit per test 256 megabytes input s ...

  4. 8636 跳格子(dfs+记忆化搜索)

    8636 跳格子 该题有题解 时间限制:2457MS  内存限制:1000K提交次数:139 通过次数:46 题型: 编程题   语言: G++;GCC Description 地上有一个n*m 的数 ...

  5. 模仿QQ客户端和服务器(支持window和linux)

    界面部分我还没有想好,到底是用MFC还是duilib呢? 好吧我先发一个demo版本,功能都有,以下为功能展示. 先说服务器(这个有俩个版本,支持win和linux):用的数据库为MYsql(因为是便 ...

  6. 三个JS函数闭包(closure)例子

    闭包是JS较难分辨的一个概念,我只是按自己的理解写下来,如有不对还请指出. 函数闭包是指当一个函数被定义在另一个函数内部时,这个内部函数使用到的变量会被封闭起来形成一个闭包,这些变量会保持形成闭包时设 ...

  7. 50个很棒的Python模块

    50个很棒的Python模块 我很喜欢Python,Python具有强大的扩展能力,我列出了50个很棒的Python模块,包含几乎所有的需要:比如Databases,GUIs,Images, Soun ...

  8. svn“Previous operation has not finished; run 'cleanup' if it was interrupted

    今天碰到了个郁闷的问题,svn执行clean up命令时报错“Previous operation has not finished; run 'cleanup' if it was interrup ...

  9. git(创建,提交,回退)

    创建版本库 2334次阅读 什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以 ...

  10. 安装 svn

    rpm -qa subversion yum install subversion svnserve --version 创建仓库目录例如: mkdir /home/svn/game 创建项目 svn ...