开启.htaccess重写之前先来看看mod_rewrite(转)
Apache的Mode Rewrite模块提供了一个基于正则表达式分析器的重写引擎来实时重写URL请求。在大多数情况下,它和.htaccess文件配合使用。就是说,.htaccess文件的一个主要功能是用来重写URL请求,那么在本小节里,我们来看看如何实现重写。
mod_rewrite
实现所有这些神奇功能的模块叫做mod_rewrite,请确保你的服务器安装并启用了该模块:
1 |
sudo a2enmod rewrite |
我们一般会把所有涉及URL重写或者重定向的代码这样放置:
1 |
<IfModule mod_rewrite.c> |
2 |
# Turn on rewrite engine |
3 |
Options +FollowSymlinks |
4 |
RewriteEngine on |
5 |
# More rules below |
6 |
... |
7 |
</IfModule> |
开启 httpd.conf 的 rewrite
- 在[Apache安装目录]/conf/httpd.conf中找到#LoadModule rewrite_module modules/mod_rewrite.so,去掉前面的注释符号#。如果没有这行,请添加。并确认apache安装目录下的modules文件夹中是否有mod_rewrite.so这个文件。这样就启用了Mod Rewrite功能。
- 在[Apache安装目录]/conf/httpd.conf中找到
1 |
<Directory /> |
2 |
Options FollowSymLinks |
3 |
AllowOverride None |
4 |
Order deny,allow |
5 |
Deny from all |
6 |
</Directory> |
把“AllowOverride None”改成“AllowOverride All”,这样所有的文件夹都支持.htaccess了,或者针对指定的文件夹启用.htaccess,可以在[Apache安装目录]/conf/httpd.conf中加入
1 |
<Directory "D:/sites/nowamagic/"> |
2 |
Options Indexes FollowSymLinks |
3 |
AllowOverride All |
4 |
Order allow,deny |
5 |
Allow from all |
6 |
</Directory> |
这种做法一般是和虚拟主机配置在一起的,所以大多数会把上述配置代码写入[Apache安装目录]/conf/extra/httpd-vhost.conf中,这样比较清晰易于管理。
- 开启了 Apache 的 rewrite 功能后,就可以使用 .htaccess 来进行重写了。关于 mod_rewrite 大概就谈到这里,下面是一些我们需要注意的地方:
- FollowSymlinks必须启用,这是rewrite引擎的安全需求。
- 通常FollowSymlinks在Apache的主配置文件中就已经启用了,所以通常可以省略。
- RewriteEngine命令用于启用rewrite引擎
- IfModule命令用于判断Apache是否安装了mod_rewrite模块,之后笔者会省略该命令,但不代表这是个好习惯。
- mod_rewrite会处理所有提交给Apache的URL请求,并与之后的规则进行匹配
开启.htaccess重写之前先来看看mod_rewrite(转)的更多相关文章
- .htaccess 重写去index.php
.htaccess 重写去index.php <IfModule mod_rewrite.c>RewriteEngine onRewriteCond %{REQUEST_FILENAME} ...
- apache开启.htaccess及.htaccess的使用方法(转)
apache开启.htaccess及.htaccess的使用方法 作者: 字体:[增加 减小] 类型:转载 时间:2010-12-02 今天本地调试PHP程序,用到了.htaccess,而默认配置里面 ...
- CentOS 下开启.htaccess
一般来说,htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置.通过htaccess文件,可以帮我们实现: 网页301重定向.自定义404错误页面.改变文件扩展名.允许 ...
- apache开启.htaccess
1 . 如何让的本地APACHE开启.htaccess 如何让的本地APACHE开启.htaccess呢?其实只要简朴修改一下apache的httpd.conf设置就让APACHE.htaccess了 ...
- CI当开启URL重写的时候,报错500 Internal Server Error
Internal Server Error The server encountered an internal error or misconfiguration and was unable to ...
- apache开启.htaccess及.htaccess的使用方法
今天本地调试PHP程序,用到了.htaccess,而默认配置里面开启.htaccess,在网上找到了开启.htaccess的可行方法,供朋友们借鉴.(开启的我他的方法不行,查找了一下AllowOver ...
- nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)的部署记录
在日常运维工作中,运维人员会时常使用到nginx的反向代理,负载均衡以及缓存等功能来优化web服务性能. 废话不多说,下面对测试环境下的nginx反向代理+缓存开启+url重写+负载均衡(带健康探测) ...
- Ubuntu --- lamp环境下安装php扩展和开启apache重写
安装教程参考:http://www.laozuo.org/8303.html 1.安装php扩展(比如安装mbstring) 先搜索相关的包 apt-cache search php7 再安装 apt ...
- centos7 Apache开启URL重写组件并配置.htaccess实现伪静态
第一.修改httpd.conf文件 A - 在etc/httpd/conf/目录下的httpd.conf 文件,找到: LoadModule rewrite_module modules/mod_re ...
随机推荐
- Extjs4 关于设置form中所有子控件为readOnly属性的解决方案
之前在网上找了一堆,但那些确实没法用,后来考虑了一下,发现主要是网上提供的假设form中只有一层控件,没有考虑到布局稍微复杂的form情形,此处采用递归的形式实现对form中所有控件(grid及but ...
- C++ 语法规则
C++ 中的布尔类型:布尔类型只占用一个bit ,但是如果连续定义多个布尔类型时,编译器可能会多个布尔类型定义在一起.true 编译器用1来表示.false 编译器用0来表示. 将一个其他类型的数 ...
- 神秘链接__proto__是什么鬼
_proto_实际上是某个实例对象的隐藏属性,而prototype是其构造器函数(或者说‘类’)的原型属性; function Mine() {} var hi = new Function(), ...
- js获取当前时间戳与日期比较
如何用javascript获取当前时间戳: 复制代码 代码示例: 方法1: var timestamp = date.parse(new date()); 结果:1280977330000 方法2: ...
- LCD驱动学习笔记
通过这几天的学习发现驱动的框架感觉都差不多,一般分为以下几个步骤: 分配一个结构体 struct x *x = amlloc(); 设置结构体的参数 硬件寄存器 file_operations 注册 ...
- 嵌套JSON 取出name与value
好久不用都忘了 mark下 $.each( { name: "John", lang: "JS" }, function(i, n){ alert( &qu ...
- A Statistical View of Deep Learning (II): Auto-encoders and Free Energy
A Statistical View of Deep Learning (II): Auto-encoders and Free Energy With the success of discrimi ...
- 终端上设置git
http://blog.163.com/xianfuying@126/blog/static/21960005201181482518631/ 在-/.ssh的位置vi id_rsa.pub 拷贝的时 ...
- android studio 新建项目 界面一直停在 【“building ‘ 项目名’ gradle project info”】
zhezhelin android studio 新建项目 界面一直停在 [“building ‘ 项目名’ gradle project info”] 安装了android studio 之后,按照 ...
- java数组排序之冒泡排序
上一篇文章说了,选择排序. 选择排序的原理就是,先确定第一个格子当中的数字是最小的,之后确定第二个格子是其他数字中最小的依次类推. 这一节当中我们来看下冒泡排序: 思路: 1.首先拿第一个数字跟第二个 ...