apache RewriteCond RewriteRule
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的更多相关文章
- Apache RewriteCond RewriteRule 入门和Laravel去掉index.php
Ci删除index.php办法: 创建.htaccess 文件放到网站的根目录下,文件中的内容如下: RewriteEngine onRewriteCond %{REQUEST_FILENAM ...
- Apache中 RewriteRule 规则参数介绍
Apache中 RewriteRule 规则参数介绍 摘要: Apache模块 mod_rewrite 提供了一个基于正则表达式分析器的重写引擎来实时重写URL请求.它支持每个完整规则可以拥有不限数量 ...
- .htaccess 基础教程(四)Apache RewriteCond 规则参数
Apache模块 mod_rewrite 提供了一个基于正则表达式分析器的重写引擎来实时重写URL请求.它支持每个完整规则可以拥有不限数量的子规则以及附加条件规则的灵活而且强大的URL操作机制.此UR ...
- Apache的RewriteRule规则详细介绍
R[=code](force redirect) 强制外部重定向 (rkyW z强制在替代字符串加上http://thishost[:thisport]/前缀重定向到外部的URL.如果code不指定, ...
- apache url rewrite 的RewriteRule参数详解
apache url rewrite 的RewriteRule参数详解 我们经常会在apache那边对一些url进行一些重写操作,那么就会涉及到很多的重写策略的选择,比如重定向的方式,参数的处理,规则 ...
- Apache之Rewrite和RewriteRule规则梳理以及http强转https的配置总结
一. 简单实例介绍一般来说,apache配置好http和https后,如果想要做http强转到https,需要设置url重定向规则,大致需要下面几个步骤即可完成配置: 1)在httpd.conf文件里 ...
- .htaccess 基础教程(三)RewriteCond标志符,RewriteRule适用的标志符
1.利用 .htaccess 防止盗链 如果不喜欢别人在他们的网页上链接自己的图片.文档的话,也可以通过htaccess的指令来做到.当然这样也可以对你的网站服务器压力变小! 这次先给出‘代码’,然后 ...
- apache禁止访问文件或目录执行权限、禁止运行脚本PHP文件的设置方法
<Directory "要去掉PHP执行权限的目录路径,例如:D:/piaoyun.cc/upload"> ErrorDocument 404 /404/404.h ...
- Apache之AllowOverride参数详解
通常利用Apache的rewrite模块对 URL 进行重写的时候, rewrite规则会写在 .htaccess 文件里.但要使 apache 能够正常的读取.htaccess 文件的内容,就必须对 ...
随机推荐
- H5加载优化
- CSS BFC(Block Formatting Context)
BFC是 W3C CSS 2.1 规范中的一个概念Block Formatting Context的缩写即格式化上下文,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用.简单讲,它是提 ...
- RIDE的使用
在RIDE中,CTRL + R 自动打开report.html , CTRL + L 自动打开 log.html
- mongodb 数据库导入.cvs文件时某些字段类型变成NumberLong的解决办法
在mongodb中导入数据时,会在数据库中生成字段记录为NumberLong的数据,可以使用以下方式将其转换为String db.Account.find().forEach( function(it ...
- array_walk与array_map 的不同 array_filter
array_walk 主要是要对数组内的每个值进行操作,操作结果影响原来的数组 array_map主要是对数组中的值进行操作后返回数组,以得到一个新数组 wallk 可以没有返回值 map要有,因 ...
- hdu_5734_Acperience
题目连接:hdu_5734_Acperience 多校的题我还是贴官方题解的好,方便快捷,省事!! #include<cstdio> #include<cmath> #defi ...
- SpringSecurity自定义过滤器
applicationContext-security.xml: <beans:beans xmlns="http://www.springframework.org/schema/s ...
- sqldeveloper连接mysql
sqldeveloper连接mysql 腑镜诏 钌d 汁叁ㄧ勋 佚蔡弥噙 不仅仅是越南帮和戴爷的事情还有谢婉莹的条 炔验遒其 倒扇油┣ 砹笄谤 几句话孟飞的信心大增兴奋不已换句话说 谠诂k厝 ...
- spring @Component
使用 @Component <context:component-scan base-package="dao" /> 虽 然我们可以通过@Autowired或@R ...
- Enum 枚举基础
1 定义一个枚举 enum Weekend { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday } 2 得到每个枚举值 f ...