php 伪静态(url rewrite)apache配置!--(豆瓣https://www.douban.com/note/98028752/)9 e( F) W# D1 p
' Q2 l l: M8 I0 Z; Kphp 伪静态(url rewrite)apache配置
, }3 V1 n: |) e; K# ]! t/ S6 M5 B9 a$ l7 S8 x
mod_rewrite是Apache的一个非常强大的功能,它可以实现伪静态页面。下面我详细说说它的使用方法!对初学者很有用的哦!% i" ? m& p2 u- V3 Y5 a) D6 B
2 c8 {3 i; e! v2 N2 T- [6 H4 p1.检测Apache是否支持mod_rewrite" W- o5 ?" y* r; t- G) I; y
" d q7 ^9 W! c6 e, B+ Y
通过php提供的phpinfo()函数查看环境配置,通过Ctrl+F查找到“Loaded Modules”,其中列出了所有apache2handler已经开启的模块,如果里面包括“mod_rewrite”,则已经支持,不再需要继续设置。
: B$ R8 p0 A2 z- q& ?# J" @
6 M5 M5 y6 b1 }如果没有开启“mod_rewrite”,则打开目录 您的apache安装目录“/apache/conf/” 下的 httpd.conf 文件,通过Ctrl+F查找到“LoadModule rewrite_module”,将前面的”#”号删除即可。) V) D0 X- U# c$ _
$ F) j' u$ j! Z" C如果没有查找到,则到“LoadModule” 区域,在最后一行加入“LoadModule rewrite_module modules/mod_rewrite.so”(必选独占一行),然后重启apache服务器即可。
# E8 x' {2 v, G- s# ~5 I2 |& v; Q/ B% ]
2.让apache服务器支持.htaccess
) C( Y; L* z0 T9 h2 A' I% {7 l, h
" d( n( W4 q5 _! H如何让自己的本地APACHE服务器支持”.htaccess”呢?其实只要简单修改一下apache的httpd.conf设置就可以让 APACHE支 持.htaccess了。打开httpd.conf文件(在那里? APACHE目录的CONF目录里面),用文本编辑器打开后,查找' s1 e% k, |# ]( N- Y+ X
* L/ N# `8 Q( z0 q! ZOptions FollowSymLinks
0 G0 q" m5 C2 V) u' V4 x! J# U& s1 k( w- j* [
AllowOverride None
' B. y4 L! L5 m+ b! q! m
# ?1 \9 z% ~& [5 R& @% _: W; e改为7 ~; O. b+ m6 l$ h
: g* ]! q8 r6 ?: P VOptions FollowSymLinks% u, D+ L* U9 R w
3 |1 ^" V7 p4 }) z6 e- N+ @
AllowOverride All
7 _' N+ a5 s3 |# b% _" o4 \
5 j9 F, q$ m9 w' h就可以了。
! H% H. a) ^5 H3 ^% z# f) l
: o f5 |2 _+ I! ?0 }8 R3.建立.htaccess 文件' _1 J) b Q1 Y; n1 v
+ G' u6 f l- y3 m如果是在windows平台下,刚开始还真不知道怎么建立”.htaccess”文件,因为这个文件实际上没有文件名,仅仅只有扩展名,通过普通方式是无法建立这个文件的,别着急,马上告诉你三种方法:三种方法都是先建立一个htaccess.txt的文本文件(当然,这个文本文件的名字你可以随便取),然后有三种方式给这个文件重命名:3 a/ G6 [3 m4 Z0 Z5 ^
# v! u' x; \# O( Y3 Z4 u& y( Z(1)用记事本 打开,点击文件–另存为,在文件名窗口输入”.htaccess”,注意是整个绿色部分,也就是包含英文引号,然后点击保存就行了。
% M# h1 I! y _( Y4 c; N2 r! ^, i, l' Z3 l; n% g" H6 x1 B6 z5 q4 e
(2)进入cmd命令 窗口,通过cd切换当刚建立htaccess.txt文件的文件夹,然后输入命令:rename htaccess.txt .htaccess ,然后点击键盘Enter键即可。8 G" o# r9 J P4 X' J* _; b
# N1 l+ W T% p8 O(3)通过ftp连接htaccess.txt所在文件夹,通过ftp软件重命名。# M+ e3 d( d& C2 @ L5 H# W" s
, e) M- \6 ~6 {9 k, ^4.rewrite规则学习/ J! H8 ^3 ^) w4 N; u
8 `0 t, ?* s- h* O2 p% P3 u* e. ]
我们新建一个.htaccess文件之后,就在里面写入以下内容:. E( Z! m* r) J t. Z( X
8 i) b9 v2 H) G0 oRewriteEngine on #rewriteengine为重写引擎开关on为开启off为关闭" _1 k/ m; q9 ?# x- t/ |0 G
/ i) ?9 J& R t: @- i* p4 U
RewriteRule ([0-9]{1,})$index.php?id=$1# u) c% r: g/ E- t% l
4 f% y. B9 _* A3 G! T7 _' E我讲解一下RewriteRule:RewriteRule是重写规则,支持正则表达式的,上面的([0-9]{1,})是指由数字组成的,$是结束标志,说明是以数字结束!% O7 b% K3 p4 A6 t4 w
4 e& Q1 A! z& v( }- q$ [! Y
好吧,现在我们可以实现伪静态页面了,写下一下的规则:2 h7 v, \8 A' I3 ~
' A& e7 v1 z: _9 Q# O, G
<IfModule mod_rewrite.c>
. g( o0 Z% j4 p: U. D: H! n+ J" P, a5 k, Z E5 A, M
RewriteEngine on* x8 }" E3 ~% j& o, h" q/ o. J
% _, `! j' }+ _2 E1 I5 HRewriteRule ([a-zA-Z]{1,})-([0-9]{1,}).html$index.php?action=$1&id=$2
& n6 D5 t( I+ P/ }4 C) u+ b! F/ e4 K3 h7 k& {; G$ x
</IfModule>
, @! ], i" N- }; l) S' h6 W" Q# e" z) N
$ n ^6 J9 v2 R4 u4 H& M
([a-zA-Z]{1,})-([0-9]{1,}).html$是规则,index.php?action=$1&id=$2是要替换的格式,$1代表第一个括号匹配的值,$2代表第二个,如此类推!!# [, @) y3 A% ?6 [- ^" w
& @5 v2 X# T4 ~: F) q! Y# _我们写一个处理的PHP脚本:: E$ o+ |! l4 Z" |, [4 y3 Y( G
& Y0 k K: U# \ T) K: dindex.php! p. Z6 N' Y7 B) x" |6 A
7 D, c' }& S# t }# _
PHP代码
6 d& i) g8 I2 G4 ]3 h" B3 x<?php) j' h; I& t; Z3 w4 n
echo ‘你的Action是:’ . $_GET['action'];- J/ h, [3 x4 t C. G7 C4 @
echo ‘<br/>’;
6 b* {! ~9 L' |# L8 I- B9 R, y0 t8 hecho ‘你的ID是:’ . $_GET['id'];( ?& L/ }& N& R, c% O6 x1 N' `
?>4 B/ R j* {* {2 ~" `6 `
好了,我们现在在浏览器中输入:7 f2 r8 Q. h! l6 [9 {- u; g7 \5 p
U/ f! o- \4 e' Z% B9 W, c! T2 _
localhost/view-12.html
* {( B0 v& P$ U1 c6 I6 p: A" i4 \8 W( X) l8 g
输出的是:5 u6 g0 G$ l X9 P& F/ g, p8 h
3 @: ]* M8 ] h# Q9 @2 v0 z+ F你的Action是:view5 c8 D* B/ Z, i
d0 {5 B. M* Y, m4 e/ M( K/ R, u3 o你的ID是:12$ [3 V1 r& R, A7 `9 ^8 U: ^' F
: u! Y; M1 K9 n" f
|