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 Cookie的一个使用注意点
Nov 08 PHP
php 采集书并合成txt格式的实现代码
Mar 01 PHP
PHP执行linux系统命令的常用函数使用说明
Apr 27 PHP
实用PHP会员权限控制实现原理分析
May 29 PHP
php 操作数组(合并,拆分,追加,查找,删除等)
Jul 20 PHP
PHP 基于Yii框架中使用smarty模板的方法详解
Jun 13 PHP
php校验表单检测字段是否为空的方法
Mar 20 PHP
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
Nov 05 PHP
php关闭warning问题的解决方法
May 17 PHP
对于Laravel 5.5核心架构的深入理解
Feb 22 PHP
PHP常见数组排序方法小结
Aug 20 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
Mar 26 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下把数组保存为文件格式的实例应用
2010/02/08 PHP
PHP判断是否有Get参数的方法
2014/05/05 PHP
关于php中的json_encode()和json_decode()函数的一些说明
2016/11/20 PHP
使用Codeigniter重写insert的方法(推荐)
2017/03/23 PHP
Yii 2中的load()和save()示例详解
2017/08/03 PHP
JavaScript NaN和Infinity特殊值 [译]
2012/09/20 Javascript
javascript阻止浏览器后退事件防止误操作清空表单
2013/11/22 Javascript
BootStrap fileinput.js文件上传组件实例代码
2017/02/20 Javascript
详解开源的JavaScript插件化框架MinimaJS
2017/10/26 Javascript
Bootstrap table中toolbar新增条件查询及refresh参数使用方法
2018/05/18 Javascript
PostgreSQL Node.js实现函数计算方法示例
2019/02/12 Javascript
JS+CSS实现随机点名(实例代码)
2019/11/04 Javascript
基于Echarts图表在div动态切换时不显示的解决方式
2020/07/20 Javascript
AngularJs的$http发送POST请求,php无法接收Post的数据问题及解决方案
2020/08/13 Javascript
[03:44]2015国际邀请赛选手档案—Cloud9.NoTail
2015/07/28 DOTA
[02:12]2015国际邀请赛 SHOWOPEN
2015/08/05 DOTA
Python中os和shutil模块实用方法集锦
2014/05/13 Python
Python获取单个程序CPU使用情况趋势图
2015/03/10 Python
Python中的高级函数map/reduce使用实例
2015/04/13 Python
在python win系统下 打开TXT文件的实例
2018/04/29 Python
Python用dilb提取照片上人脸的示例
2020/10/26 Python
Python Process创建进程的2种方法详解
2021/01/25 Python
Django中template for如何使用方法
2021/01/31 Python
使用分层画布来优化HTML5渲染的教程
2015/05/08 HTML / CSS
Noon埃及:埃及在线购物
2019/11/26 全球购物
办公室秘书自我鉴定
2014/01/18 职场文书
中餐厅经理岗位职责
2014/04/11 职场文书
医学专业毕业生推荐信
2014/07/12 职场文书
实习生工作证明范本
2014/09/14 职场文书
市委常委会班子党的群众路线教育实践活动整改方案
2014/10/25 职场文书
个性与发展自我评价
2015/03/06 职场文书
师德承诺书2015
2015/04/28 职场文书
中学综治宣传月活动总结
2015/05/07 职场文书
海洋天堂观后感
2015/06/05 职场文书
高中生物教学反思
2016/02/20 职场文书
mysql拆分字符串作为查询条件的示例代码
2022/07/07 MySQL