php 伪静态(url rewrite)apache配置!--(豆瓣https://www.douban.com/note/98028752/)
9 A0 u! W7 S- h
' s+ m( N R: X: y" q q pphp 伪静态(url rewrite)apache配置- L, }8 f7 J! M/ X1 c9 t
8 T* v2 z0 z; n
mod_rewrite是Apache的一个非常强大的功能,它可以实现伪静态页面。下面我详细说说它的使用方法!对初学者很有用的哦!' x0 l; ?; X- A, Y0 T3 a0 X4 p
0 ~8 d( F9 p, ]9 R
1.检测Apache是否支持mod_rewrite
1 i; o5 v$ ]! o2 K# c& N( H4 i: w- \/ Y n
通过php提供的phpinfo()函数查看环境配置,通过Ctrl+F查找到“Loaded Modules”,其中列出了所有apache2handler已经开启的模块,如果里面包括“mod_rewrite”,则已经支持,不再需要继续设置。
$ M/ }5 N( F6 x% _: p7 Z
6 l6 C5 y. S: C如果没有开启“mod_rewrite”,则打开目录 您的apache安装目录“/apache/conf/” 下的 httpd.conf 文件,通过Ctrl+F查找到“LoadModule rewrite_module”,将前面的”#”号删除即可。- a; l, ~" I! y, Q: e; g& }
4 t% e0 g, s* S7 p
如果没有查找到,则到“LoadModule” 区域,在最后一行加入“LoadModule rewrite_module modules/mod_rewrite.so”(必选独占一行),然后重启apache服务器即可。
( p( G. `% C7 O4 q
U' [7 w$ j1 [ Q6 f4 G9 `2.让apache服务器支持.htaccess* \/ M3 s; z& {2 b/ O4 K2 X
" S4 f' ` }7 U3 o1 m
如何让自己的本地APACHE服务器支持”.htaccess”呢?其实只要简单修改一下apache的httpd.conf设置就可以让 APACHE支 持.htaccess了。打开httpd.conf文件(在那里? APACHE目录的CONF目录里面),用文本编辑器打开后,查找2 N6 f' ^9 g; W, V/ m
6 h2 K" R2 x8 A7 z; m6 g. kOptions FollowSymLinks
0 z/ H4 k0 A% S) L7 J! O# o3 ~# I6 p) D* \* j
AllowOverride None9 W1 m( W7 U% b( |
- D& h* W, L2 J L3 _# E7 G
改为
5 `7 D4 V2 e" ~! q& F
/ l$ ~0 z5 F* L3 S4 oOptions FollowSymLinks4 m& ~) {$ d5 n$ N. E
/ d7 R1 X3 z, i2 N% B5 ?AllowOverride All& @. ^! @% {0 U; h6 ~+ z
P( U0 D! l; h* ^. W# n$ W
就可以了。
j: V0 K$ u; M4 s" R. i
0 G1 c6 V) q2 j& h0 ]# E) s9 ]3.建立.htaccess 文件9 R& b% U' m0 P- j& r5 H k; a5 Y$ y8 v
: J3 C4 _; a; Z6 a/ l- E4 c
如果是在windows平台下,刚开始还真不知道怎么建立”.htaccess”文件,因为这个文件实际上没有文件名,仅仅只有扩展名,通过普通方式是无法建立这个文件的,别着急,马上告诉你三种方法:三种方法都是先建立一个htaccess.txt的文本文件(当然,这个文本文件的名字你可以随便取),然后有三种方式给这个文件重命名:
' K V m1 J% H: U* H. _
9 {: d |" i1 S: X, L# ?1 | R(1)用记事本 打开,点击文件–另存为,在文件名窗口输入”.htaccess”,注意是整个绿色部分,也就是包含英文引号,然后点击保存就行了。9 s l* A" T; N; o( Y0 U3 h
9 \5 @* F: p+ W% j
(2)进入cmd命令 窗口,通过cd切换当刚建立htaccess.txt文件的文件夹,然后输入命令:rename htaccess.txt .htaccess ,然后点击键盘Enter键即可。
1 V& e& l( p/ f& f. g3 g& O! [, q" I; W; _5 z1 |* ~7 n$ _5 r
(3)通过ftp连接htaccess.txt所在文件夹,通过ftp软件重命名。9 c: c, Q( Y3 V
* Q* } D- j! d3 [
4.rewrite规则学习0 x, k6 R4 K- ~, C& s" U
- b* j0 Q4 w E4 t. t& ^/ x我们新建一个.htaccess文件之后,就在里面写入以下内容:( \9 N$ j4 o, k( M+ Q( I7 e
w/ E @( l; I
RewriteEngine on #rewriteengine为重写引擎开关on为开启off为关闭 G2 |- a* o& w5 a4 k2 R8 |
) L4 F) e8 O" |* E1 iRewriteRule ([0-9]{1,})$index.php?id=$1& X) ~) q$ s; _9 V9 B. K' d5 L
" F# f0 q" O4 o, }0 L
我讲解一下RewriteRule:RewriteRule是重写规则,支持正则表达式的,上面的([0-9]{1,})是指由数字组成的,$是结束标志,说明是以数字结束!
5 Y& ?* Q" x# h, n0 E
; J% W; r; F6 h1 P好吧,现在我们可以实现伪静态页面了,写下一下的规则:6 Z& @ Z) [! n. b$ T7 o! ]
& [6 S* [ P( P) k<IfModule mod_rewrite.c>. A7 _* j* Q& a) k
: ^% g3 ?: M* T; U1 F1 NRewriteEngine on$ F2 Z; U7 m0 D+ L( a, S. M
1 V5 {) d$ _( b7 @' pRewriteRule ([a-zA-Z]{1,})-([0-9]{1,}).html$index.php?action=$1&id=$2% F+ E" m; c5 f8 D2 {
6 c; s; W; x1 Z! l</IfModule>
( D, ^- f) l* e* Z
, p) l6 b' Y3 ?, J7 m/ O
4 m% P6 e, h+ m0 H6 ?, h; ~([a-zA-Z]{1,})-([0-9]{1,}).html$是规则,index.php?action=$1&id=$2是要替换的格式,$1代表第一个括号匹配的值,$2代表第二个,如此类推!!& O# y: ? W" |! c5 J7 y4 k9 y
8 H D: i/ t" q$ G
我们写一个处理的PHP脚本:( r: i+ P5 L c3 i
, {( z% `# \; w; P1 X
index.php V7 y4 I* b( X7 x& b" \
: m6 }$ Y5 C L; p0 DPHP代码
: E, o) X" M; V' w0 E/ Y' [<?php: }6 @' n3 M3 \: p: u3 M
echo ‘你的Action是:’ . $_GET['action'];8 i" p# v3 ]* O6 A3 i3 Y
echo ‘<br/>’;
2 Z: M( ]3 f; a: |( oecho ‘你的ID是:’ . $_GET['id'];8 L9 ~. P: H% c4 M* Z0 \1 f
?>
* @( ] ^3 Z. P6 u+ O好了,我们现在在浏览器中输入:1 b6 f( E1 w9 W5 d
# v7 G0 \( Z' L& Jlocalhost/view-12.html7 M4 N2 ~& S4 `5 w+ ^6 q3 R9 V
& Z* `+ h" E9 a3 A输出的是:
. d& [0 g+ p2 g) ^. ^( r$ p& k' F2 g
9 I, o: v6 O% w' _3 f* U9 w( Z+ P& K你的Action是:view
2 p* N7 U8 [: b; q8 f- C
/ q e. r( v+ Y6 Z( f+ @8 T3 n你的ID是:126 W6 ]6 p4 L' }) T- C9 M
8 a$ ~1 J. X9 G. F, k# L |