Linux中为php配置伪静态


Posted in PHP onDecember 17, 2014

mod_rewrite是Apache的一个非常强大的功能,它可以实现伪静态页面。下面我详细说说它的使用方法

1.检测Apache是否支持mod_rewrite

通过php提供的phpinfo()函数查看环境配置,通过Ctrl+F查找到“Loaded Modules”,其中列出了所有apache2handler已经开启的模块,如果里面包括“mod_rewrite”,则已经支持,不再需要继续设置。
如果没有开启“mod_rewrite”,则打开目录 您的apache安装目录“/apache/conf/” 下的 httpd.conf 文件,通过Ctrl+F查找到“LoadModule rewrite_module”,将前面的”#”号删除即可。
如果没有查找到,则到“LoadModule” 区域,在最后一行加入“LoadModule rewrite_module ,modules/mod_rewrite.so”(必选独占一行),然后重启apache服务器即可。

2.让apache服务器支持.htaccess

如何让自己的本地APACHE服务器支持”.htaccess”呢?其实只要简单修改一下apache的httpd.conf设置就可以让 APACHE支 持.htaccess了。打开httpd.conf文件(在那里? APACHE目录的CONF目录里面),
用文本编辑器打开后,查找

Options FollowSymLinks

AllowOverride None

改为

Options FollowSymLinks

AllowOverride All

就可以了。
3.建立.htaccess 文件
有1种最简单的方法建立.htaccess文件:
用记事本 打开,点击文件?另存为,在文件名窗口输入”.htaccess”,注意是整个绿色部分,
也就是包含英文引号,然后点击保存就行了。
4.rewrite规则学习
我们新建一个.htaccess文件之后,就在里面写入以下内容:
RewriteEngine on #rewriteengine为重写引擎开关on为开启off为关闭
RewriteRule ([0-9]{1,})index.php?id=1
我讲解一下RewriteRule:RewriteRule是重写规则,支持正则表达式的,上面的([0-9]{1,})是指由数
字组成的,是结束标志,说明是以数字结束!好吧,现在我们可以实现伪静态页面了,写下一下的规则:RewriteEngineonRewriteRule([a−zA−Z]1,)−([0−9]1,).htmlindex.php?action=1&id=2
([a-zA-Z]{1,})-([0-9]{1,}).html是规则,index.php?action=1&id=2是要替换的格式,1代表第
一个括号匹配的值,2代表第二个,如此类推!!我们写一个处理的PHP脚本:index.phpPHP代码echo‘你的Action是:′._GET['action'];
echo ‘
';
echo ‘你的ID是:' . $_GET['id'];
?>
好了,我们现在在浏览器中输入:
localhost/page-18.html
输出的是:
你的Action是:page
你的ID是:18

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

查看apache的httpd.conf没有LoadModule rewrite_module modules/mod_rewrite.so这一行,则需要手动生成此模块,方法如下:

apache源码包路径为:/ftp/httpd2.2

apache安装路径:/usr/local/apache/

一、增加mod_rewrite模块

# find . -name mod_rewrite.c //在apache的源码安装目录中寻找mod_rewrite.c文件 

./modules/mappers/mod_rewrite.c 

# cd /ftp/httpd2.2/modules/mappers //进入包含mod_rewrite.c文件的目录 

# /usr/local/apache/bin/apxs -c mod_rewrite.c //apxs应指定绝对路径,在你当前正在使用apache的bin目录里 

# /usr/local/apache/bin/apxs -i -a -n mod_rewrite mod_rewrite.la

如果没有什么错误的话,应该在你的apache的modules目录(/usr/local/apache/modules)中编译出一个mod_rewrite.so文件。

编辑httpd.conf文件,确认httpd.conf中已经包含mod_rewrite.so的加载语句,如下:

LoadModule mod_rewrite_module modules/mod_rewrite.so

二、重启apache

1、如果出现以下错误:

httpd: Syntax error on line 54 of /usr/local/apache/conf/httpd.conf: Can't locate API module structure `mod_rewrite_module' in file /usr/local/apache/modules/mod_rewrite.so: /usr/local/apache/modules/mod_rewrite.so: undefined symbol: mod_rewrite_module

需要把

LoadModule mod_rewrite_module modules/mod_rewrite.so

改为

LoadModule rewrite_module modules/mod_rewrite.so

2、如果出现以下错误

httpd: Syntax error on line 54 of /usr/local/apache/conf/httpd.conf: module rewrite_module is built-in and can't be loaded

表示模块是内建的,不用再调入,注释掉

#LoadModule rewrite_module modules/mod_rewrite.so

三、对某一虚拟站点开启url重写

1、编辑httpd-vhost.conf,在对应的站点标签内加入:

 Directory  /website/webA   

    AllowOverride All 

 /Directory 

即:

 VirtualHost *:80  

    DocumentRoot  /website/webA  

    ErrorLog  logs/webA.com-error_log  

    CustomLog  logs/webA.com-access_log  common 

 Directory  /website/webA   

    AllowOverride All 

 /Directory  

 /VirtualHost 

四、把对站点的重写规则保存到站点根目录下,文件名为“.htaccess”

五、重启apache即可   

PHP 相关文章推荐
php 获取select下拉列表框的值
May 08 PHP
PHP判断是否有Get参数的方法
May 05 PHP
ThinkPHP采用GET方式获取中文参数查询无结果的解决方法
Jun 26 PHP
php简单定时执行任务的实现方法
Feb 23 PHP
全面解析PHP验证码的实现原理 附php验证码小案例
Aug 17 PHP
PHP生成图片缩略图类示例
Jan 12 PHP
php文件包含目录配置open_basedir的使用与性能详解
Apr 03 PHP
thinkPHP显示不出验证码的原因与解决方法分析
May 20 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
Oct 21 PHP
Laravel等框架模型关联的可用性浅析
Dec 15 PHP
PDO实现学生管理系统
Mar 21 PHP
基于PHP的登录和注册的功能的实现
Aug 06 PHP
phpmyadmin提示The mbstring extension is missing的解决方法
Dec 17 #PHP
非常实用的PHP常用函数汇总
Dec 17 #PHP
php中magic_quotes_gpc对unserialize的影响分析
Dec 16 #PHP
php提示Warning:mysql_fetch_array() expects的解决方法
Dec 16 #PHP
php通过记录IP来防止表单重复提交方法分析
Dec 16 #PHP
PHP使用glob函数遍历目录或文件夹的方法
Dec 16 #PHP
php批量添加数据与批量更新数据的实现方法
Dec 16 #PHP
You might like
第四节 构造函数和析构函数 [4]
2006/10/09 PHP
正则表达式语法
2006/10/09 Javascript
NOT NULL 和NULL
2007/01/15 PHP
Yii框架实现邮箱激活的方法【数字签名】
2016/10/18 PHP
跟着JQuery API学Jquery 之二 属性
2010/04/09 Javascript
jquery.cookie.js 操作cookie实现记住密码功能的实现代码
2011/04/27 Javascript
javascript延时加载之defer测试
2012/12/28 Javascript
jquery实现图片等比例缩放以及max-width在ie中不兼容解决
2013/03/21 Javascript
jQuery中:empty选择器用法实例
2014/12/30 Javascript
深入分析下javascript中的[]()+!
2015/07/07 Javascript
实现音乐播放器的代码(html5+css3+jquery)
2015/08/04 Javascript
Node.js的MongoDB驱动Mongoose基本使用教程
2016/03/01 Javascript
jQuery实现放大镜效果实例代码
2016/03/17 Javascript
老生常谈 关于JavaScript的类的继承
2016/06/24 Javascript
Bootstrap轮播插件中图片变形的终极解决方案 使用jqthumb.js
2016/07/10 Javascript
js图片上传前预览功能(兼容所有浏览器)
2016/08/24 Javascript
jQuery插件jqGrid动态获取列和列字段的方法
2017/03/03 Javascript
javascript 开发之百度地图使用到的js函数整理
2017/05/19 Javascript
Angular2 自定义validators的实现方法
2017/07/05 Javascript
mpvue中使用flyjs全局拦截的实现代码
2018/09/13 Javascript
js序列化和反序列化的使用讲解
2019/01/19 Javascript
微信小程序和百度的语音识别接口详解
2019/05/06 Javascript
基于JS实现一个随机生成验证码功能
2019/05/29 Javascript
JS面向对象之单选框实现
2020/01/17 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
2020/07/22 Javascript
python 3.7.0 安装配置方法图文教程
2018/08/27 Python
python之yield和Generator深入解析
2019/09/18 Python
python上传时包含boundary时的解决方法
2020/04/08 Python
用60行代码实现Python自动抢微信红包
2021/02/04 Python
详解css3 Transition属性(平滑过渡菜单栏案例)
2017/09/05 HTML / CSS
英国领先的电视购物零售商:Ideal World
2019/03/18 全球购物
琳达·法罗眼镜英国官网:Linda Farrow英国
2021/01/19 全球购物
UML设计模式笔试题
2014/06/07 面试题
表演方阵解说词
2014/02/08 职场文书
幼儿园开学报名通知
2015/07/16 职场文书
css实现文章分割线样式的多种方法总结
2021/04/21 HTML / CSS