php 伪静态(url rewrite)apache配置!--(豆瓣https://www.douban.com/note/98028752/)/ Z" L. P& ]2 X+ v! J% d
) R8 }" h8 X/ s1 @4 R! Nphp 伪静态(url rewrite)apache配置
; O+ [% a3 }5 t& x# H0 T$ `$ ~% e2 M2 T/ ]3 \& n
mod_rewrite是Apache的一个非常强大的功能,它可以实现伪静态页面。下面我详细说说它的使用方法!对初学者很有用的哦!
+ X! P. ^5 ?1 M
" w. w ^. ?1 ]+ ]1.检测Apache是否支持mod_rewrite. \% X# r( ?6 w2 t; {% W( J3 n8 j
$ a( h, {# F( ? ^8 T, Z2 j通过php提供的phpinfo()函数查看环境配置,通过Ctrl+F查找到“Loaded Modules”,其中列出了所有apache2handler已经开启的模块,如果里面包括“mod_rewrite”,则已经支持,不再需要继续设置。! C; T9 I' o; }) w
& x2 m6 R8 f) s4 W+ _2 B7 W如果没有开启“mod_rewrite”,则打开目录 您的apache安装目录“/apache/conf/” 下的 httpd.conf 文件,通过Ctrl+F查找到“LoadModule rewrite_module”,将前面的”#”号删除即可。
: P' @: h. ]/ U& q5 `
' M+ P& D. R" b! C# J如果没有查找到,则到“LoadModule” 区域,在最后一行加入“LoadModule rewrite_module modules/mod_rewrite.so”(必选独占一行),然后重启apache服务器即可。
~" d D8 ~' R a8 `3 a1 q, z- v* {" m# ?' ^9 D
2.让apache服务器支持.htaccess
: g6 C `) z( e+ D( v
3 Y- s: i8 b6 l4 z如何让自己的本地APACHE服务器支持”.htaccess”呢?其实只要简单修改一下apache的httpd.conf设置就可以让 APACHE支 持.htaccess了。打开httpd.conf文件(在那里? APACHE目录的CONF目录里面),用文本编辑器打开后,查找2 S5 s* v- L9 C+ A, t% I0 I
; f) V4 z% [. P7 C: {/ x1 r QOptions FollowSymLinks! {& G2 J9 c. n" v( s7 {8 j( K
2 K. a% f6 J1 N! a7 h4 {AllowOverride None
! r3 B/ Z5 ]/ y8 e/ Q+ Z2 i' l9 @! p' f3 x, q6 _9 l, k$ N2 ]
改为! J6 E# i6 M* f. A8 F5 H
) v" b) l) z& n S U4 d2 P- r ]
Options FollowSymLinks
9 v& w; u6 C* V7 F6 x% W! l4 E3 |5 b7 G
AllowOverride All5 _6 ^( i- n* q, W& S
2 `& z( v: `3 y
就可以了。
' z: [% a6 b i: O, ^9 D2 u9 S$ F- ^
3.建立.htaccess 文件 F9 _5 d2 t; v' a0 Z* w2 o
: D1 Y$ _3 n/ Y# y$ d6 n/ \
如果是在windows平台下,刚开始还真不知道怎么建立”.htaccess”文件,因为这个文件实际上没有文件名,仅仅只有扩展名,通过普通方式是无法建立这个文件的,别着急,马上告诉你三种方法:三种方法都是先建立一个htaccess.txt的文本文件(当然,这个文本文件的名字你可以随便取),然后有三种方式给这个文件重命名:
' Z. z% @2 U/ }( Q9 T6 X. Y& ?6 h4 u1 y! @- U
(1)用记事本 打开,点击文件–另存为,在文件名窗口输入”.htaccess”,注意是整个绿色部分,也就是包含英文引号,然后点击保存就行了。8 W4 `3 o# f" n. }4 F
' I; K5 i# k( n(2)进入cmd命令 窗口,通过cd切换当刚建立htaccess.txt文件的文件夹,然后输入命令:rename htaccess.txt .htaccess ,然后点击键盘Enter键即可。
7 x( R. j2 k# d t
6 Y, N, z/ b- b! h7 {(3)通过ftp连接htaccess.txt所在文件夹,通过ftp软件重命名。
4 A6 j" a2 P4 _9 m8 j" G) {/ w3 W' g; e: [! @3 Z! y: t
4.rewrite规则学习; U* Q1 J0 m3 M5 y! a R5 F
: g* J+ y: D9 N% v6 X% O我们新建一个.htaccess文件之后,就在里面写入以下内容: \: l5 s. o+ V4 X. s3 _
# g0 r1 W# n2 j/ h$ O/ i+ @; XRewriteEngine on #rewriteengine为重写引擎开关on为开启off为关闭
, \ e( \- R: O* M6 V$ j, _; I/ Z
8 X( b1 n# |/ v' B& ZRewriteRule ([0-9]{1,})$index.php?id=$1
. P! O1 F; {/ L# _# ?& E% o: S L) T- `2 z6 p
我讲解一下RewriteRule:RewriteRule是重写规则,支持正则表达式的,上面的([0-9]{1,})是指由数字组成的,$是结束标志,说明是以数字结束!9 u+ e" q8 p1 }/ m4 i6 c
: \* w# J( S# h6 C
好吧,现在我们可以实现伪静态页面了,写下一下的规则:' i0 l7 U" Y; j+ ]2 e
8 w# N' W- U( y* D<IfModule mod_rewrite.c>
( n, `( w" f- ^: H O( ]9 r, n
) a0 s! J6 q0 NRewriteEngine on
. _: X9 \8 s2 R, f& b) l. @# K3 o% M7 |, M1 C
RewriteRule ([a-zA-Z]{1,})-([0-9]{1,}).html$index.php?action=$1&id=$2
9 }- O" T6 J" p; s5 ^# Q. c
; x8 A9 @" e2 i8 }) J</IfModule>
) S1 W9 ]/ W( G0 {5 M
6 A% i @* c8 C1 Y) T8 E1 g
, y# d. y2 a6 P0 J([a-zA-Z]{1,})-([0-9]{1,}).html$是规则,index.php?action=$1&id=$2是要替换的格式,$1代表第一个括号匹配的值,$2代表第二个,如此类推!!
2 f; ^$ R1 c( K8 }: M/ P3 n* R5 M* I1 V( @
我们写一个处理的PHP脚本:5 i! i3 |! D) P$ @1 I8 b# e5 x. L
9 `# @) r0 z# h w; W
index.php
6 R! O+ _! x1 M! J0 R, `* r, u+ F8 k% r. f/ I2 M1 K- D
PHP代码, d/ B7 n$ C' m7 b& s% L+ ^
<?php
* ?- E+ l, S$ M0 c& g9 Cecho ‘你的Action是:’ . $_GET['action'];
2 e' P+ W5 |- i% \; ]: @echo ‘<br/>’;' M2 J* @/ ?' Z; ]: D1 ^4 c
echo ‘你的ID是:’ . $_GET['id'];
/ h, l& d( h6 o) L?>
. ~3 ^- p. n& V1 D7 |+ E. I好了,我们现在在浏览器中输入:
8 @# Q, C+ W) i: R) T4 b" q1 x- y) ^ S
localhost/view-12.html
% ~7 y C1 L3 q. [1 z, i' n' A: f" d6 t$ b! _* d/ w
输出的是:
/ g8 D7 b( f) W @, v
' }( t( g7 D3 j3 C( d你的Action是:view/ s8 [5 V( q: @8 k0 V N
/ ~* C! ~/ l, m% a. a
你的ID是:12# k3 |6 J- t* K8 ^0 p, k! |
# D8 Q# Q/ h% `* }
|