php 伪静态(url rewrite)apache配置!--(豆瓣https://www.douban.com/note/98028752/)
- ^& D: p E* x$ h( C" J& b8 K- C0 w
php 伪静态(url rewrite)apache配置9 l1 Y& n+ o! l$ V
" R7 C9 v0 W2 a* vmod_rewrite是Apache的一个非常强大的功能,它可以实现伪静态页面。下面我详细说说它的使用方法!对初学者很有用的哦!6 b1 ]7 K9 v f% u
: ]* V U8 z3 r T, P$ l9 H7 f
1.检测Apache是否支持mod_rewrite
|9 [1 M$ b7 u( e h5 q
2 ^8 L! `" P' R4 W4 @ w& ^+ U通过php提供的phpinfo()函数查看环境配置,通过Ctrl+F查找到“Loaded Modules”,其中列出了所有apache2handler已经开启的模块,如果里面包括“mod_rewrite”,则已经支持,不再需要继续设置。. D) _( E. i0 }3 c1 t1 w
Y2 M, q! _( H
如果没有开启“mod_rewrite”,则打开目录 您的apache安装目录“/apache/conf/” 下的 httpd.conf 文件,通过Ctrl+F查找到“LoadModule rewrite_module”,将前面的”#”号删除即可。
+ c v6 J9 |9 E$ d! ~2 u; G
% k3 v$ [- H( e$ N7 Z7 [1 s1 S如果没有查找到,则到“LoadModule” 区域,在最后一行加入“LoadModule rewrite_module modules/mod_rewrite.so”(必选独占一行),然后重启apache服务器即可。) j4 q# m( h% X( ^$ U J* }
) K- X( i# h+ F
2.让apache服务器支持.htaccess
% G+ @1 l% K+ p& S2 _! `5 Z. ]4 o( ^1 b3 y& g* \
如何让自己的本地APACHE服务器支持”.htaccess”呢?其实只要简单修改一下apache的httpd.conf设置就可以让 APACHE支 持.htaccess了。打开httpd.conf文件(在那里? APACHE目录的CONF目录里面),用文本编辑器打开后,查找. W G! v2 g) h4 V
. J1 @ d2 D: S0 L/ BOptions FollowSymLinks9 u# V- f' H) P1 l3 b- R# e9 e
, M+ T r0 c9 T+ U1 v6 d& W1 k/ M
AllowOverride None
( O8 a- r0 B+ p8 u" ?2 U- n4 V, M- p
改为
6 n- S: P+ x3 d" E; V& v0 j* L H+ W4 Q
, Z0 ^ y) v2 y5 `+ w& yOptions FollowSymLinks& F. R7 j! ]9 x9 x6 o
: `7 M6 U5 V, J- y$ J+ T
AllowOverride All
! B: f$ b# H! k6 @3 }1 ^8 s) z2 @# ~# F% f# X
就可以了。
8 y2 {! _7 S1 q3 C3 k5 L" ^
1 ` _& g/ g! \5 i2 B3.建立.htaccess 文件
" d$ f) d ~$ b. a6 J9 K* G/ K5 z8 q5 S/ C2 E! ?: c( `1 h
如果是在windows平台下,刚开始还真不知道怎么建立”.htaccess”文件,因为这个文件实际上没有文件名,仅仅只有扩展名,通过普通方式是无法建立这个文件的,别着急,马上告诉你三种方法:三种方法都是先建立一个htaccess.txt的文本文件(当然,这个文本文件的名字你可以随便取),然后有三种方式给这个文件重命名:, Q2 g* ?$ F K- C) _: R
2 }. v$ d; R2 x J* V( u( Q(1)用记事本 打开,点击文件–另存为,在文件名窗口输入”.htaccess”,注意是整个绿色部分,也就是包含英文引号,然后点击保存就行了。 [2 a1 x7 x/ u- y
% K8 U8 d$ ^% T2 A `
(2)进入cmd命令 窗口,通过cd切换当刚建立htaccess.txt文件的文件夹,然后输入命令:rename htaccess.txt .htaccess ,然后点击键盘Enter键即可。
c% q% F; T: O+ ^3 e6 E B% A) F) v7 O
(3)通过ftp连接htaccess.txt所在文件夹,通过ftp软件重命名。
6 r8 ^& \3 U; ^; ?; x
8 q" J+ x7 r- R, @8 \3 L# A% W5 ]( n6 F4.rewrite规则学习$ ?: r. r! X: h
) T+ e7 W2 s/ F9 M; ?2 c
我们新建一个.htaccess文件之后,就在里面写入以下内容:5 T6 d7 v# D& @7 C8 J3 V/ H
0 {8 j) {0 K3 S- k. f
RewriteEngine on #rewriteengine为重写引擎开关on为开启off为关闭
. C1 t1 Y: C$ a6 A
/ U) h; |3 n! I0 R5 B7 \+ }8 xRewriteRule ([0-9]{1,})$index.php?id=$1
% {% p# x, M% S( s+ `# ?" o- ^9 H" W) h. y7 L$ {+ I* q( Y' j
我讲解一下RewriteRule:RewriteRule是重写规则,支持正则表达式的,上面的([0-9]{1,})是指由数字组成的,$是结束标志,说明是以数字结束!5 X. X* ]( |1 a
8 F# S- A8 S7 y! ]$ \' {8 Q6 Z3 T4 ^好吧,现在我们可以实现伪静态页面了,写下一下的规则:( U7 N$ h* z& x% \# ~
I c. s8 f- L( j( {$ k2 f<IfModule mod_rewrite.c>* D+ w' Q/ s5 m
; t: W; e5 d& ^* D! P" C
RewriteEngine on8 S, C: d$ e3 D, M2 L# @
5 ]! b/ K3 t# H4 Q0 J) v5 C/ CRewriteRule ([a-zA-Z]{1,})-([0-9]{1,}).html$index.php?action=$1&id=$2$ G+ F! F3 ^ r3 A
% [, D" n# s' v8 O% a
</IfModule>& j- { I$ L1 y
0 |% _- s4 {: s2 L+ B8 l
7 l, D; Q/ B# B o5 N
([a-zA-Z]{1,})-([0-9]{1,}).html$是规则,index.php?action=$1&id=$2是要替换的格式,$1代表第一个括号匹配的值,$2代表第二个,如此类推!!
( X+ h" y) q6 i, p9 F6 C# X0 Z5 x/ V1 y# @- z. I- _
我们写一个处理的PHP脚本:- m; ^: |# d- x
# F) `% |- U0 t& `) L9 Z( j
index.php
: [: J% S) ~+ i2 ~2 Y/ `: \7 q6 h8 _/ \# i4 F1 f- g
PHP代码
5 Y6 `6 O7 i, }. C2 ^<?php
& J) d$ S& \$ [- |! ^echo ‘你的Action是:’ . $_GET['action'];1 e8 z% H- ]+ V8 p$ E9 M
echo ‘<br/>’;
3 K) K: m3 h; |% J: d8 i# m1 k# z6 Uecho ‘你的ID是:’ . $_GET['id'];9 ?+ R6 ^% u( I2 P$ B4 \* t
?>5 g. w8 b9 D* H4 A) j1 a
好了,我们现在在浏览器中输入:0 { `; [8 A( \/ v' v" h
5 q8 x7 v5 e0 ^. C G" D9 i* K$ g9 ?localhost/view-12.html
( u* m8 Z2 ~4 a c
; v) {& { T8 q) e* z' ^- Z输出的是:
" F w1 W8 Q% l0 ^% s
- I9 s( g, x/ f" w/ J+ L4 _# y你的Action是:view: N7 Y: g6 t' {$ S U# C7 \' j
& O4 m' t6 w+ Z0 b' s, W
你的ID是:12' J3 J9 l9 `+ @3 u) a& v
5 P, S2 S1 b$ K0 [# [2 ]
|