php 伪静态(url rewrite)apache配置!--(豆瓣https://www.douban.com/note/98028752/)7 S$ Q/ |9 I5 }! L
% h+ n6 G. l" U) D. X6 f
php 伪静态(url rewrite)apache配置# D" s1 E; L( l# y- i
% B; ?& j; d2 ]' n) Q5 v5 }
mod_rewrite是Apache的一个非常强大的功能,它可以实现伪静态页面。下面我详细说说它的使用方法!对初学者很有用的哦!0 r4 G7 E4 N0 C. _; Z
* I8 H% v2 O. ~3 G5 t, r" Y" `9 m F
1.检测Apache是否支持mod_rewrite o) Y+ l# S- C; H) s( [
) `9 H. S0 d* n" c ?9 N2 A' r+ Y通过php提供的phpinfo()函数查看环境配置,通过Ctrl+F查找到“Loaded Modules”,其中列出了所有apache2handler已经开启的模块,如果里面包括“mod_rewrite”,则已经支持,不再需要继续设置。
$ G( p6 t" D9 m: _# b# g! E; G. _" E$ H
如果没有开启“mod_rewrite”,则打开目录 您的apache安装目录“/apache/conf/” 下的 httpd.conf 文件,通过Ctrl+F查找到“LoadModule rewrite_module”,将前面的”#”号删除即可。6 u+ t7 Q6 x8 m$ J# l O
1 Y# F3 Y' `0 q* D* a/ _如果没有查找到,则到“LoadModule” 区域,在最后一行加入“LoadModule rewrite_module modules/mod_rewrite.so”(必选独占一行),然后重启apache服务器即可。
5 j# ~5 g9 ~. f9 M4 `
2 E, [: E( _0 d" K$ s9 R5 m. G2.让apache服务器支持.htaccess! S! t2 o( _) G5 g3 v' h% ?
" E$ {/ R/ U; d* q$ ]
如何让自己的本地APACHE服务器支持”.htaccess”呢?其实只要简单修改一下apache的httpd.conf设置就可以让 APACHE支 持.htaccess了。打开httpd.conf文件(在那里? APACHE目录的CONF目录里面),用文本编辑器打开后,查找
5 v: I- Y0 ]- p: ~' ^$ b& o) p$ Q
$ p' A. J1 Q; G7 s, k$ TOptions FollowSymLinks5 ?9 \. t/ U6 O% D* _& J r
, t& v$ o( S8 P5 ?
AllowOverride None' U8 q. R. u( ^8 C4 D9 N/ n
+ \; _0 p6 Q. W# S( {改为
; q0 t/ m# T X$ h) N$ @
a2 h @/ e, Q0 U. N* H! y/ iOptions FollowSymLinks
6 w" w* w5 k0 S/ z1 s3 b
2 m# o4 z l) @6 ~. ~' h! Q- \AllowOverride All
* A# f7 X. V- K/ B4 Z) e9 u# d+ B4 A( |& M, a, X
就可以了。
) w% w3 \, F. D& W; I4 C1 W9 A+ Y0 |- p. O# l6 s
3.建立.htaccess 文件
$ y, @" ?7 c5 R6 x; `
* n1 J n. }7 v如果是在windows平台下,刚开始还真不知道怎么建立”.htaccess”文件,因为这个文件实际上没有文件名,仅仅只有扩展名,通过普通方式是无法建立这个文件的,别着急,马上告诉你三种方法:三种方法都是先建立一个htaccess.txt的文本文件(当然,这个文本文件的名字你可以随便取),然后有三种方式给这个文件重命名:
; ^1 E! l3 h: K% n% u
& a# B; z& }: I, {. w2 a* E/ k(1)用记事本 打开,点击文件–另存为,在文件名窗口输入”.htaccess”,注意是整个绿色部分,也就是包含英文引号,然后点击保存就行了。; ~/ d7 v" Q* L( H
. V4 q+ }4 f* Y/ D% w/ @(2)进入cmd命令 窗口,通过cd切换当刚建立htaccess.txt文件的文件夹,然后输入命令:rename htaccess.txt .htaccess ,然后点击键盘Enter键即可。
0 E! p; {' S' y: e; E* s/ {
0 o4 ]( \) b4 I* \0 G(3)通过ftp连接htaccess.txt所在文件夹,通过ftp软件重命名。
9 T7 b7 H' c% U2 x) Z8 q1 }5 k; l0 _0 A' K+ [8 z3 Z+ D1 y
4.rewrite规则学习, W. `5 r% T: {$ ?4 _1 v
% G) H% w. _; H- i% P1 J( p我们新建一个.htaccess文件之后,就在里面写入以下内容:
9 [) T8 k& _5 ]1 O3 u) D! K0 O1 m! T- w: v3 Q( U) f, x
RewriteEngine on #rewriteengine为重写引擎开关on为开启off为关闭
- C: m5 w4 F, D5 y) B: C0 d1 o1 ]( Y% |& M. B
RewriteRule ([0-9]{1,})$index.php?id=$1- L* q" M! g. [" r1 N9 a7 U
7 ~, e8 S( t, G' c& K我讲解一下RewriteRule:RewriteRule是重写规则,支持正则表达式的,上面的([0-9]{1,})是指由数字组成的,$是结束标志,说明是以数字结束!3 W2 t$ {3 L6 C1 B& @( z5 Z8 [) C
; G% q( L M& o4 { ~% y% [
好吧,现在我们可以实现伪静态页面了,写下一下的规则:7 C( A0 n n2 w5 N
5 [3 o. e2 ]) Y- O# M% I) D<IfModule mod_rewrite.c>
+ ?4 b& X, r, f) A5 B
% o( e- L6 z$ _/ wRewriteEngine on
0 M1 m p# {7 }/ h. V5 D
8 w3 l/ @! K ]" qRewriteRule ([a-zA-Z]{1,})-([0-9]{1,}).html$index.php?action=$1&id=$2$ h' R! I* R. |1 W
( @5 h3 x4 P( |# ?: |9 J</IfModule>
& J- k, p' u. o/ O- ~
7 W7 f# M' B4 L- W% H
3 F, `( K {3 K' C([a-zA-Z]{1,})-([0-9]{1,}).html$是规则,index.php?action=$1&id=$2是要替换的格式,$1代表第一个括号匹配的值,$2代表第二个,如此类推!!4 q7 E* V" `* x9 l! N
( P: a/ _. Y& p: T7 k
我们写一个处理的PHP脚本:
2 j" E3 h' o' E; F1 d# k0 \" e$ p# a
index.php8 d# t+ T: w) j$ h% G/ A
6 C4 H7 F% D9 Q& h, n7 ^PHP代码
6 g% O# I' j4 H6 L<?php' T& v$ X& G6 M! X9 n) f4 |
echo ‘你的Action是:’ . $_GET['action'];
7 n4 R9 N2 i* Y+ `echo ‘<br/>’;
: z0 O: L+ f7 W8 necho ‘你的ID是:’ . $_GET['id'];* f( [) \6 j# W; Z7 Z+ o
?>0 T1 h, B3 |5 K m$ A% g4 T
好了,我们现在在浏览器中输入:% l, v$ V6 m) A7 X0 M$ ]3 U! |3 _ r
% \3 C8 y- p4 f @4 ]' [2 W- z9 }
localhost/view-12.html# j% f+ `6 }4 B8 ? ]$ T
6 |; e/ J; i( \7 V
输出的是:
& P8 W3 U" \; h+ H5 v/ D( D2 G0 R# f! t3 \2 ]: Q' K2 S5 {# W
你的Action是:view
& u C& v+ F$ X* I4 I! v8 j* p0 ?3 u! l0 a% U/ x, K, |4 X
你的ID是:12
$ k4 f4 X8 x! I1 S2 U4 W
7 s" v/ B. c. O _ i$ s% A0 w |