php 伪静态(url rewrite)apache配置!--(豆瓣https://www.douban.com/note/98028752/)
" R* Q( d" I" @4 Q: y% G! N1 v
* H/ K! G* u8 v6 k+ [9 v$ z4 Xphp 伪静态(url rewrite)apache配置
, j1 J1 s0 c5 B6 m ~: t9 M% A% k2 R, U3 X+ I3 E
mod_rewrite是Apache的一个非常强大的功能,它可以实现伪静态页面。下面我详细说说它的使用方法!对初学者很有用的哦!. }( C* }2 G6 I) q3 Y
! l) r9 C* a- L" R( e; I+ P% ^; \) O
1.检测Apache是否支持mod_rewrite
. {1 K5 x5 y6 [: d3 P: i- t2 V, @! K; Y. V" h( ]" ^5 k
通过php提供的phpinfo()函数查看环境配置,通过Ctrl+F查找到“Loaded Modules”,其中列出了所有apache2handler已经开启的模块,如果里面包括“mod_rewrite”,则已经支持,不再需要继续设置。
' |' K3 V+ S8 W, o) L) K6 @# S1 `6 k( W
如果没有开启“mod_rewrite”,则打开目录 您的apache安装目录“/apache/conf/” 下的 httpd.conf 文件,通过Ctrl+F查找到“LoadModule rewrite_module”,将前面的”#”号删除即可。8 F7 h+ d- G, z7 S5 v
8 M. K' `- u1 d* p% x如果没有查找到,则到“LoadModule” 区域,在最后一行加入“LoadModule rewrite_module modules/mod_rewrite.so”(必选独占一行),然后重启apache服务器即可。$ m: q+ _, \ M% t# a5 i
% y$ ^, U, z% ` F. t" G
2.让apache服务器支持.htaccess- f3 @0 x/ N. D: g' ^+ B2 U
6 f* g1 d5 i* v' H, o/ v如何让自己的本地APACHE服务器支持”.htaccess”呢?其实只要简单修改一下apache的httpd.conf设置就可以让 APACHE支 持.htaccess了。打开httpd.conf文件(在那里? APACHE目录的CONF目录里面),用文本编辑器打开后,查找
. R$ l0 _9 u8 b6 K' t. l
, I5 \. H8 F+ O% AOptions FollowSymLinks
2 r7 d" p/ ^, s% R- Z/ L* _! H5 W; l9 p1 y4 }0 D1 ^
AllowOverride None. n2 O6 u |* l' L
8 n5 j8 c. f Y8 {! Y改为) \! U: b$ B4 M" |, l6 f2 _
( o; v$ `0 ~/ J; w) U& I8 Z7 J( UOptions FollowSymLinks2 @7 T" E% T2 J" K: V% Y) W
c7 Y W4 C1 a# t* [+ `AllowOverride All
" f4 m* u/ ], u& U% B2 T
+ R4 X0 a4 b, B8 v# a% P就可以了。- [3 P0 N3 ?, B4 F# w; Y" H! q
2 N d6 Q; \/ l3.建立.htaccess 文件
5 ^1 j2 X. g0 h- T2 Q6 R8 o; H6 ^
如果是在windows平台下,刚开始还真不知道怎么建立”.htaccess”文件,因为这个文件实际上没有文件名,仅仅只有扩展名,通过普通方式是无法建立这个文件的,别着急,马上告诉你三种方法:三种方法都是先建立一个htaccess.txt的文本文件(当然,这个文本文件的名字你可以随便取),然后有三种方式给这个文件重命名:! R* ~: N7 b8 Z+ I- R2 d
) o: `; I# u9 A, v m(1)用记事本 打开,点击文件–另存为,在文件名窗口输入”.htaccess”,注意是整个绿色部分,也就是包含英文引号,然后点击保存就行了。
2 Q+ e% X" Q6 m% U. b# |: F2 p; Q% G5 f& B: @% f
(2)进入cmd命令 窗口,通过cd切换当刚建立htaccess.txt文件的文件夹,然后输入命令:rename htaccess.txt .htaccess ,然后点击键盘Enter键即可。# P' Q7 G/ c" H2 V1 |
0 E' b% a; t1 ]4 w# M: G) D: ^(3)通过ftp连接htaccess.txt所在文件夹,通过ftp软件重命名。
. ?6 B4 g# W. U! \7 e$ X6 l" w0 f3 Y I$ @
4.rewrite规则学习
* M; B1 A! z% E6 v- ]- a& B+ n. y8 J+ f
我们新建一个.htaccess文件之后,就在里面写入以下内容:8 W* Q' f! F5 G. i
2 j8 [5 D2 ^' i X
RewriteEngine on #rewriteengine为重写引擎开关on为开启off为关闭* z. ?' n0 W/ G
9 T/ M5 w+ w' c2 G, D5 \RewriteRule ([0-9]{1,})$index.php?id=$1
3 e; H7 n3 Y' `8 e# c
7 r+ H6 z: w- L" c4 U5 t我讲解一下RewriteRule:RewriteRule是重写规则,支持正则表达式的,上面的([0-9]{1,})是指由数字组成的,$是结束标志,说明是以数字结束!( C/ z9 q/ P6 R
- N; E" Q2 j; e
好吧,现在我们可以实现伪静态页面了,写下一下的规则:
& y/ {: F8 ]) o6 `- b3 f# T% X& P& x# A% `
<IfModule mod_rewrite.c>
8 f; @4 K( j2 T, W( R/ W) F- P4 L0 c2 `+ [1 h9 o0 b
RewriteEngine on
+ V1 x8 z0 \) w. A9 A
6 @8 D9 M' I( g5 j9 a; M9 kRewriteRule ([a-zA-Z]{1,})-([0-9]{1,}).html$index.php?action=$1&id=$23 L& a$ [' o5 Y- y/ Y3 ]7 z' P
7 W8 ?1 j# p: |6 S
</IfModule>
! n" f/ f0 Y& g7 I1 M' {8 D' M
9 P, F2 I- a u/ z! c, _9 ]$ ]: o, Z6 L
([a-zA-Z]{1,})-([0-9]{1,}).html$是规则,index.php?action=$1&id=$2是要替换的格式,$1代表第一个括号匹配的值,$2代表第二个,如此类推!!
- r9 @" E( R- S4 C, j0 R
% C7 E( D2 Z1 {我们写一个处理的PHP脚本:
- {7 Q( Y7 v3 A7 i8 Z) w9 V& n4 U3 O) F0 \
index.php
/ P1 R. ]8 H! V8 `" b3 [; P5 d- i" i9 K& }- F3 E) ~7 d2 {
PHP代码3 ~9 j# a8 q- g; C' n
<?php
9 c% o: f' j" Y6 ?echo ‘你的Action是:’ . $_GET['action'];8 N+ n& L' Z$ f% C9 _6 e" a/ J3 O
echo ‘<br/>’;: N4 ]9 K+ C5 c, F$ U- b6 j
echo ‘你的ID是:’ . $_GET['id'];
2 i: N8 _! ]9 m T( ?, @& z?>, j6 ]# ~. S, u/ M, p' D+ ~* H
好了,我们现在在浏览器中输入:
% ~1 P: N. g: m ?3 X# R# q1 h. n- r+ |' z. G9 V5 P" P
localhost/view-12.html! \: A% r" y9 X/ A/ s
; \* N: w& T# d) x& i% `. \输出的是:
; Z, u; c4 v3 g5 G1 `* G
# }- \% e) p+ s9 |你的Action是:view
1 y: M. ?2 q. W' D0 h) P- e& k( ?& a3 U
你的ID是:12& D5 H. o) _1 o9 N& Y0 c5 H4 B% d
) ~# B! k* e: d- L H |