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. Oracle字符串操作[转:http://www.cnblogs.com/xd502djj/archive/2010/08/11/1797577.html]

    ORACLE 字符串操作 1 字符串连接   SQL> select 'abc' || 'def' from dual; 'ABC'|------abcdef 2 小写SQL>select ...

  2. 使用非 GUI 模式运行 JMeter 压力测试

    使用非 GUI 模式,即命令行模式运行 JMeter 测试脚本能够大大缩减所需要的系统资源.使用命令jmeter -n -t <testplan filename> -l <list ...

  3. log4net 日志文件占用,不能及时释放

    在appender 下面加 <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />

  4. PAT (Top Level) Practise 1005 Programming Pattern (35)

    后缀数组.排序之后得到height数组,然后从上到下将height>=len的都分为一组,然后找到第一组个数最多的输出即可. #pragma comment(linker, "/STA ...

  5. Android底部导航栏创建——ViewPager + RadioGroup

    原创文章,引用请注明出处:http://www.cnblogs.com/baipengzhan/p/6270201.html Android底部导航栏有多种实现方式,本文详解其中的ViewPager ...

  6. 第六节,初识python和字符编码

    程序语言的发展 机器语言 程序语言,最初的计算机语言是机器语言,完全是0和1组成的二进制串  如:01010101 11010101 汇编语言 因为01010101的字符串,冗长,不利于维护,所以产生 ...

  7. hdu_5783_Divide the Sequence(贪心)

    题目链接:hdu_5783_Divide the Sequence 题意: 给你一个数列,让你分尽可能多的段,并且保证每一段的前缀和都不小于0 题解: 从后往前xjb贪心就行了 #include< ...

  8. hdu_2955_Robberies(01背包)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2955 题意:给一个概率p和n个银行,每个银行有一些钱和被抓的概率,问在满足被抓的概率在p以下,抢到的最 ...

  9. linuxmint卸载软件

    删除你已经卸载掉的软件包的命令为 sudo apt-get autoclean 还有一类软件包,我们每个人都应该删除,那就是你已经卸载了,但是一些只有它依赖而别的软件包都不需要的软件包还留在你的系统里 ...

  10. UnicodeEncodeError: 'ascii' codec can't encode characters in position 14-15: ordinal not in range(128)

    python在安装时,默认的编码是ascii,当程序中出现非ascii编码时,python的处理常常会报类似这样的错误. UnicodeEncodeError: 'ascii' codec can't ...