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中使用Oracle数据库(5)
Oct 09 PHP
PHP MySQL应用中使用XOR运算加密算法分享
Aug 28 PHP
解析php通过cookies获取远程网页的指定代码
Jun 25 PHP
Drupal简体中文语言包安装教程
Sep 27 PHP
php中PDO方式实现数据库的增删改查
May 17 PHP
初识ThinkPHP控制器
Apr 07 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
Jan 17 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例
Oct 11 PHP
mac pecl 安装php7.1扩展教程
Oct 17 PHP
Thinkphp 3.2框架使用Redis的方法详解
Oct 24 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
Zend引擎的发展 [15]
2006/10/09 PHP
require(),include(),require_once()和include_once()区别
2008/03/27 PHP
PHP获取MSN好友列表类的实现代码
2013/06/23 PHP
php使用iconv中文截断问题的解决方法
2015/02/11 PHP
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法
2016/10/08 PHP
Laravel中的Auth模块详解
2017/08/17 PHP
有一段有意思的代码-javascript现实多行信息
2007/08/26 Javascript
jquery里的正则表达式说明
2011/08/03 Javascript
js获取select选中的option的text示例代码
2013/12/19 Javascript
javascript arguments使用示例
2014/12/16 Javascript
javascript框架设计之类工厂
2015/06/23 Javascript
js采用concat和sort将N个数组拼接起来的方法
2016/01/21 Javascript
pc加载更多功能和移动端下拉刷新加载数据
2016/11/07 Javascript
js简单正则验证汉字英文及下划线的方法
2016/11/28 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
2017/07/07 Javascript
layui获取多选框中的值方法
2018/08/15 Javascript
vue强制刷新组件的方法示例
2019/02/28 Javascript
小程序登录/注册页面设计的实现代码
2019/05/24 Javascript
简单了解微信小程序 e.target与e.currentTarget的不同
2019/09/27 Javascript
详解node和ES6的模块导出与导入
2020/02/19 Javascript
selenium 反爬虫之跳过淘宝滑块验证功能的实现代码
2020/08/27 Javascript
[01:10:16]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第一局
2016/02/27 DOTA
Python编程实现的简单Web服务器示例
2017/06/22 Python
使用python实现mqtt的发布和订阅
2019/05/05 Python
Python3.6 中的pyinstaller安装和使用教程
2020/03/16 Python
html5基础标签(html5视频标签 html5新标签用法)
2013/12/30 HTML / CSS
体育教育个人自荐信范文
2013/12/01 职场文书
校园招聘策划书
2014/01/09 职场文书
CAD制图人员的自荐信
2014/02/07 职场文书
中学生国旗下讲话稿
2014/04/26 职场文书
家庭贫困证明范本(经典版)
2014/09/22 职场文书
开展党的群众路线教育实践活动工作总结
2014/11/05 职场文书
校长一岗双责责任书
2015/05/09 职场文书
javascript拖曳互换div的位置实现示例
2021/06/28 Javascript
利用Python将list列表写入文件并读取的方法汇总
2022/03/25 Python