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中的MVC模式运用技巧
May 03 PHP
php strlen mb_strlen计算中英文混排字符串长度
Jul 10 PHP
PHP autoload与spl_autoload自动加载机制的深入理解
Jun 05 PHP
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
Jan 19 PHP
discuz加密解密函数使用方法和中文注释
Jan 21 PHP
php内核解析:PHP中的哈希表
Jan 30 PHP
PHP使用GIFEncoder类生成gif动态滚动字幕
Jul 01 PHP
php之curl设置超时实例
Nov 03 PHP
使用xampp搭建运行php虚拟主机的详细步骤
Oct 21 PHP
完美利用Yii2微信后台开发的系列总结
Jul 18 PHP
PHP钩子与简单分发方式实例分析
Sep 04 PHP
php代码调试利器firephp安装与使用方法分析
Aug 21 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
php中截取字符串支持utf-8
2007/01/18 PHP
PHP写入WRITE编码为UTF8的文件的实现代码
2008/07/07 PHP
php cookie 详解使用实例
2016/11/03 PHP
基于jQuery实现的百度导航li拖放排列效果,即时更新数据库
2012/07/31 Javascript
简单实用的全选反选按钮例子
2013/10/18 Javascript
在JavaScript中操作时间之getUTCDate()方法的使用
2015/06/10 Javascript
JavaScript Math 对象常用方法总结
2016/04/28 Javascript
AngularJS 中文API参考手册
2016/07/28 Javascript
通过Ajax使用FormData对象无刷新上传文件方法
2016/12/08 Javascript
JS ES6多行字符串与连接字符串的表示方法
2017/04/26 Javascript
防止页面url缓存中ajax中post请求的处理方法
2017/10/10 Javascript
Node解决简单重复问题系列之Excel内容的获取
2018/01/02 Javascript
详解在React.js中使用PureComponent的重要性和使用方式
2018/07/10 Javascript
vue组件横向树实现代码
2018/08/02 Javascript
vue-cli3.0 脚手架搭建项目的过程详解
2018/10/19 Javascript
JS实现深度优先搜索求解两点间最短路径
2019/01/17 Javascript
Android分包MultiDex策略详解
2017/10/30 Python
python如何使用unittest测试接口
2018/04/04 Python
Django项目中添加ldap登陆认证功能的实现
2019/04/04 Python
python3爬虫中异步协程的用法
2020/07/10 Python
TobyDeals美国:在电子产品上获得最好的优惠和折扣
2019/08/11 全球购物
Engel & Bengel官网:婴儿推车、儿童房家具和婴儿设备
2019/12/28 全球购物
领导班子个人对照检查材料(群众路线)
2014/09/26 职场文书
学校班子个人对照检查材料思想汇报
2014/09/27 职场文书
警察正风肃纪剖析材料
2014/10/16 职场文书
学校群众路线专项整治方案
2014/10/31 职场文书
北京导游词
2015/02/12 职场文书
离职信范文
2015/06/23 职场文书
2016优秀护士求职自荐信
2016/01/28 职场文书
《巨人的花园》教学反思
2016/02/19 职场文书
Nginx配置并兼容HTTP实现代码解析
2021/03/31 Servers
深入理解Vue的数据响应式
2021/05/15 Vue.js
css背景和边框标签实例详解
2021/05/21 HTML / CSS
pytorch 如何使用float64训练
2021/05/24 Python
分析并发编程之LongAdder原理
2021/06/29 Java/Android
Android 界面一键变灰 深色主题工具类
2022/04/28 Java/Android