php 伪静态(url rewrite)apache配置!--(豆瓣https://www.douban.com/note/98028752/)
2 l9 W5 H2 R/ q& J* }
F4 Y2 X# m9 L' [! A" \2 |php 伪静态(url rewrite)apache配置
+ c% N! ~* {- Q/ _* D7 N
0 ~0 ]& n8 ^- B* t9 J+ x9 Emod_rewrite是Apache的一个非常强大的功能,它可以实现伪静态页面。下面我详细说说它的使用方法!对初学者很有用的哦!
) H% Y& b* n+ B }. g' E0 Y m- p W' A
1.检测Apache是否支持mod_rewrite& q7 ?+ V1 g4 Q3 E
; h% @ F* W" k7 |- d$ E通过php提供的phpinfo()函数查看环境配置,通过Ctrl+F查找到“Loaded Modules”,其中列出了所有apache2handler已经开启的模块,如果里面包括“mod_rewrite”,则已经支持,不再需要继续设置。
1 C+ b+ L# g2 d% n$ \
" m9 z. e6 G* l3 F* J1 m如果没有开启“mod_rewrite”,则打开目录 您的apache安装目录“/apache/conf/” 下的 httpd.conf 文件,通过Ctrl+F查找到“LoadModule rewrite_module”,将前面的”#”号删除即可。& l" Z$ z& W+ Y" M" v; [7 V6 U
5 ~0 U5 J( |5 B3 w# U7 f
如果没有查找到,则到“LoadModule” 区域,在最后一行加入“LoadModule rewrite_module modules/mod_rewrite.so”(必选独占一行),然后重启apache服务器即可。
0 f1 v& \0 d* ]) f" V( H% I" _; ^5 v1 `! g H6 `
2.让apache服务器支持.htaccess! o# Z0 Y- t! J
- Z5 E5 F- ~' D
如何让自己的本地APACHE服务器支持”.htaccess”呢?其实只要简单修改一下apache的httpd.conf设置就可以让 APACHE支 持.htaccess了。打开httpd.conf文件(在那里? APACHE目录的CONF目录里面),用文本编辑器打开后,查找
8 i. W* z8 |, [8 ~# Y
( ?$ n/ g" x, J# E8 ZOptions FollowSymLinks
/ t" S( c0 B4 h: S% `9 K. f, i7 t
AllowOverride None
& Y2 W* A- l- l" p2 \% W" e& ~* g6 x$ g& U, M) C4 p: v) a& u
改为
r) X2 P! I' [8 o, k, k
$ T/ W5 f- D Q* mOptions FollowSymLinks
% [: G: J' q7 W- J( Y( X% ^7 Y
0 Q% W% N, y8 c1 W7 v9 \6 b+ uAllowOverride All
; q7 W0 q8 X* l6 s; O% w' S+ W6 h3 |3 `! w! X3 u. M5 h
就可以了。2 _1 f8 e2 w: U. a5 c6 i
: x7 e( L- o& e- y$ C3.建立.htaccess 文件6 |) a% a$ M# h8 o: f
- m0 Q* E4 v6 j f3 V
如果是在windows平台下,刚开始还真不知道怎么建立”.htaccess”文件,因为这个文件实际上没有文件名,仅仅只有扩展名,通过普通方式是无法建立这个文件的,别着急,马上告诉你三种方法:三种方法都是先建立一个htaccess.txt的文本文件(当然,这个文本文件的名字你可以随便取),然后有三种方式给这个文件重命名:! @% w! T) M' K$ j& L; R
( R+ t/ a& |0 [5 F9 x
(1)用记事本 打开,点击文件–另存为,在文件名窗口输入”.htaccess”,注意是整个绿色部分,也就是包含英文引号,然后点击保存就行了。
A% [3 J3 F7 n' f! ~6 z% L, o! B9 p8 ?' V9 A) e
(2)进入cmd命令 窗口,通过cd切换当刚建立htaccess.txt文件的文件夹,然后输入命令:rename htaccess.txt .htaccess ,然后点击键盘Enter键即可。
& o. l0 H# w& c; C& G0 X) @2 h, y( O9 f2 q- p2 s1 g) Q% D. W
(3)通过ftp连接htaccess.txt所在文件夹,通过ftp软件重命名。0 t/ ~' D; p0 Q! g
- \4 Y* g# e4 A; M4.rewrite规则学习2 n8 C3 H. \) J1 S k7 M
2 ]8 z c5 m/ _0 F0 m4 J我们新建一个.htaccess文件之后,就在里面写入以下内容:
' Q2 \( _8 y4 e' i3 j, l( j* r' L- N2 X! t, S3 b6 r% f4 h+ j
RewriteEngine on #rewriteengine为重写引擎开关on为开启off为关闭& Y, g# ]/ L/ h K
5 R) k+ [6 P4 l( P5 ]5 p, hRewriteRule ([0-9]{1,})$index.php?id=$1
( O2 ^! s3 J; a- L" |
- j$ [. x8 C. M% e* z3 ^9 ]& x我讲解一下RewriteRule:RewriteRule是重写规则,支持正则表达式的,上面的([0-9]{1,})是指由数字组成的,$是结束标志,说明是以数字结束!
) N+ T4 M7 ]5 T
% j, ~6 g+ V1 `( C# W/ u好吧,现在我们可以实现伪静态页面了,写下一下的规则:
4 U) X; u- r b2 P. H* q. n0 n2 A& c0 p1 a1 B4 B
<IfModule mod_rewrite.c>2 L3 d- x ]* }$ H0 X1 ]- g
* E! I, U4 |5 c2 i, u/ m& YRewriteEngine on
' P, \$ e" {5 R" o/ W8 P/ [7 y8 u# _) s* }7 F
RewriteRule ([a-zA-Z]{1,})-([0-9]{1,}).html$index.php?action=$1&id=$2
- `( C. U5 j! I+ T4 [& |& v# W( J$ I
, w1 `$ P) W/ a# V6 ?1 k' Q' @</IfModule>, U/ U5 H/ v$ _" H
6 `6 c4 T* i1 R& h, C; y5 S2 J7 u6 ~4 A
([a-zA-Z]{1,})-([0-9]{1,}).html$是规则,index.php?action=$1&id=$2是要替换的格式,$1代表第一个括号匹配的值,$2代表第二个,如此类推!!9 @2 X, c5 _3 g
1 N, P; ]: k% b: O0 X% \/ g我们写一个处理的PHP脚本:0 {2 E I6 \8 S* q$ [$ i4 s
. ?# A( k0 r3 D: tindex.php2 K+ v( [- I" z: Y, \8 P
H& S; z! q% K/ Y3 |* \, x
PHP代码8 n2 t4 w: M$ j, f3 `
<?php' Z( K' h3 B8 y m' A
echo ‘你的Action是:’ . $_GET['action'];! T$ K& C- Q7 u7 a' B+ Z# q
echo ‘<br/>’;
+ p) k1 \' G, E8 F3 Mecho ‘你的ID是:’ . $_GET['id'];
: h- M8 h+ l( b. i0 S5 e' e# R?>- [- O E% T/ ^* W1 U. D$ q. e
好了,我们现在在浏览器中输入:
% }' k/ B( }( D5 x# _, {" L8 V" {9 M! X8 l
localhost/view-12.html
! m; \7 x; V% X$ t. \
. {3 P8 j: f% f# ~: e输出的是:4 q5 ] [$ s, M- `
: E( _1 L: {3 [. b
你的Action是:view
1 {' y( j5 A4 ]+ @
5 p9 L% h& l7 z7 ]1 g% R7 z* e你的ID是:12/ R$ d" t% z* a+ J( A. |$ p4 y
" G. |3 v) Y/ f( [
|