php 伪静态(url rewrite)apache配置!--(豆瓣https://www.douban.com/note/98028752/)
5 M5 h. p- c- B Y$ ~+ A; S/ _* }+ R8 F* e0 \# p P
php 伪静态(url rewrite)apache配置
. _! Z( I4 P, F% j% X
% x; ]% V& h7 X! T/ e8 h- M" Dmod_rewrite是Apache的一个非常强大的功能,它可以实现伪静态页面。下面我详细说说它的使用方法!对初学者很有用的哦!" m8 a; o% K- O0 m
/ a- Y S- j$ w: y
1.检测Apache是否支持mod_rewrite Y: C. l& L4 V: A6 y
" O8 d- g9 f" l. A5 ~- g, D6 A通过php提供的phpinfo()函数查看环境配置,通过Ctrl+F查找到“Loaded Modules”,其中列出了所有apache2handler已经开启的模块,如果里面包括“mod_rewrite”,则已经支持,不再需要继续设置。
8 N3 P% T& X$ J$ E( k
7 r: z. U# Q4 T" E如果没有开启“mod_rewrite”,则打开目录 您的apache安装目录“/apache/conf/” 下的 httpd.conf 文件,通过Ctrl+F查找到“LoadModule rewrite_module”,将前面的”#”号删除即可。4 c) v1 t/ @% X8 ]* |* w; C
6 \# ^) X- z6 ?5 i* x' j6 b% E如果没有查找到,则到“LoadModule” 区域,在最后一行加入“LoadModule rewrite_module modules/mod_rewrite.so”(必选独占一行),然后重启apache服务器即可。
' C E5 k" X, b- A. G. q0 h# ]8 f" q) {; W9 R( x- m9 e
2.让apache服务器支持.htaccess8 M1 O4 [, P( B9 k! u1 N: ]: g
]0 P2 W! ~) L8 P7 {如何让自己的本地APACHE服务器支持”.htaccess”呢?其实只要简单修改一下apache的httpd.conf设置就可以让 APACHE支 持.htaccess了。打开httpd.conf文件(在那里? APACHE目录的CONF目录里面),用文本编辑器打开后,查找
/ [! w3 x/ x9 x1 h( e$ h; I. l$ \
Options FollowSymLinks9 H& S$ e7 o+ c) r4 y+ }8 W
& M7 b7 d8 V6 t* w, k& Z* b* p
AllowOverride None P/ {" a8 S/ P6 X# M$ Y
: M$ Y& H7 h& F) } y8 { [. Z
改为* M' F c! [% [7 B! e
- w* L) j& ?3 u6 }) AOptions FollowSymLinks
/ Q% B p2 P+ \, s$ X7 S) j2 K9 u/ T8 [6 o6 B7 F
AllowOverride All: m7 x/ Q7 X1 R2 E: y( p7 f+ x
2 \8 H3 Z" f! p5 @" s% Y就可以了。: F) T, ?# Q4 B+ {+ |5 z8 z) u
9 P1 K1 n u% j7 D3 k
3.建立.htaccess 文件4 P- X! C* B) q7 c# A5 k
6 K2 E& J4 J) ]3 B; s2 v如果是在windows平台下,刚开始还真不知道怎么建立”.htaccess”文件,因为这个文件实际上没有文件名,仅仅只有扩展名,通过普通方式是无法建立这个文件的,别着急,马上告诉你三种方法:三种方法都是先建立一个htaccess.txt的文本文件(当然,这个文本文件的名字你可以随便取),然后有三种方式给这个文件重命名:1 G+ ^7 d) O" B6 T2 B1 h
1 D$ m7 Q) ^- p' y(1)用记事本 打开,点击文件–另存为,在文件名窗口输入”.htaccess”,注意是整个绿色部分,也就是包含英文引号,然后点击保存就行了。
# h5 s' }! ?0 R( n
8 r; d) R* Q+ C$ O' f9 ^3 x/ \5 q(2)进入cmd命令 窗口,通过cd切换当刚建立htaccess.txt文件的文件夹,然后输入命令:rename htaccess.txt .htaccess ,然后点击键盘Enter键即可。
; ~. l" A) E9 b* [4 J) ~
b2 v+ b J; y% K0 H9 B(3)通过ftp连接htaccess.txt所在文件夹,通过ftp软件重命名。! J# i! c# Q+ n+ ~
# M3 U+ h1 V- k; L% [# C
4.rewrite规则学习* C/ Q0 ~. _7 y* K. a% D$ M
$ I1 F ^0 }" z3 ~/ K我们新建一个.htaccess文件之后,就在里面写入以下内容:
8 J2 z; M. S/ S; z( y U
8 k2 P/ n8 N, S5 V! q' ERewriteEngine on #rewriteengine为重写引擎开关on为开启off为关闭
) Z4 t% ^/ y& H6 `# A1 u
1 o0 x2 _# m2 x( W. A+ [+ V! [ [RewriteRule ([0-9]{1,})$index.php?id=$1
, m0 g" f5 Y+ ?. k9 `9 G7 p4 @
( @! n, D! l8 \+ D1 S J我讲解一下RewriteRule:RewriteRule是重写规则,支持正则表达式的,上面的([0-9]{1,})是指由数字组成的,$是结束标志,说明是以数字结束!
( K+ i/ E6 N1 p, {2 D6 r I+ C5 O* Z5 i5 ?% H3 b/ Z
好吧,现在我们可以实现伪静态页面了,写下一下的规则:. O; n) Z: N& K4 }7 b. U* m' X
; E0 b6 e g/ s* Z
<IfModule mod_rewrite.c>
( Z/ o9 G+ t7 S5 L1 f# z5 B) v% z# ]$ H- y
RewriteEngine on
1 v8 {( W3 }* x- n. X
8 M O5 J: {) N# J4 H& gRewriteRule ([a-zA-Z]{1,})-([0-9]{1,}).html$index.php?action=$1&id=$2. e# I9 l* W ~, X: r
# T$ P; C0 e) ]( e5 N8 A; C7 w/ n- m
</IfModule>- S% L- O6 o) K& p% P& ?, ^
& F% ~/ b" Y- i/ f/ m
! F& ?6 Y9 x4 z" m6 w
([a-zA-Z]{1,})-([0-9]{1,}).html$是规则,index.php?action=$1&id=$2是要替换的格式,$1代表第一个括号匹配的值,$2代表第二个,如此类推!!
' l) l+ g" O% o% S1 k
F5 w1 }/ N' e0 o# z我们写一个处理的PHP脚本:
0 @+ t& l8 ^/ V/ m, e6 U [ X
0 B, C1 `# k" ]# K6 _9 m7 s0 _index.php
# \& O- z: L7 P P, l, o, ?( ~2 c6 e
PHP代码
7 a; l$ S- _: x* D6 D2 s<?php8 o* [$ o& f: _: j
echo ‘你的Action是:’ . $_GET['action'];- z2 l* K7 I, B: j& L
echo ‘<br/>’;
@; m/ a; M7 A$ o6 recho ‘你的ID是:’ . $_GET['id'];
1 `" S" z4 k6 H! U% N1 G. r1 S) G?>. d, a% @9 c7 T3 |
好了,我们现在在浏览器中输入:" y7 X) ]% C5 ?0 ^. R4 F( D
8 O( v* T6 ] R& {2 `$ Z. l2 A K. b
localhost/view-12.html7 x8 ^9 E( q% i
+ f' R+ c9 m$ Z输出的是:
. p2 h8 x% q9 L. h- E
3 w$ V6 I7 h+ n你的Action是:view: m4 q9 |* [) ?, b' U
3 g) t" z" I0 l你的ID是:122 k. z( T# b E1 `# N
$ `; j u: d. R- G/ Q9 B
|