php 伪静态(url rewrite)apache配置!--(豆瓣https://www.douban.com/note/98028752/)
4 p& ]! t- I. S" s. e& B; i, w2 N) B
$ }6 i' K& Q# y( [php 伪静态(url rewrite)apache配置+ j0 l# E+ k- v
( M: n7 h7 W- m! }3 D6 w# ]mod_rewrite是Apache的一个非常强大的功能,它可以实现伪静态页面。下面我详细说说它的使用方法!对初学者很有用的哦!
0 a7 G* j7 t# M
3 N# z; P1 Z/ R7 m! @# P8 J1.检测Apache是否支持mod_rewrite7 p2 H. m. r) \/ Z
( C! @6 r" h( g通过php提供的phpinfo()函数查看环境配置,通过Ctrl+F查找到“Loaded Modules”,其中列出了所有apache2handler已经开启的模块,如果里面包括“mod_rewrite”,则已经支持,不再需要继续设置。
* }! W7 I/ h' g& i% v; O! p! ?* O8 a! e. H# O9 M% D
如果没有开启“mod_rewrite”,则打开目录 您的apache安装目录“/apache/conf/” 下的 httpd.conf 文件,通过Ctrl+F查找到“LoadModule rewrite_module”,将前面的”#”号删除即可。
$ _- x8 L3 a9 x. |; N9 X, T: [3 D) ^% I
如果没有查找到,则到“LoadModule” 区域,在最后一行加入“LoadModule rewrite_module modules/mod_rewrite.so”(必选独占一行),然后重启apache服务器即可。, e; n# e( ` E
; p1 ^7 e5 y) B$ ` j/ F0 G# b
2.让apache服务器支持.htaccess# i4 c# }0 E% E3 V+ G1 U* u# v
4 w2 Y( {$ X7 b0 O. L如何让自己的本地APACHE服务器支持”.htaccess”呢?其实只要简单修改一下apache的httpd.conf设置就可以让 APACHE支 持.htaccess了。打开httpd.conf文件(在那里? APACHE目录的CONF目录里面),用文本编辑器打开后,查找
) R. r8 |4 s X! Z& o8 y6 a) l& [9 @% w! Q/ A, I
Options FollowSymLinks* M/ z* P9 f9 f- L3 e% }% p
; P) { R% P- S3 {$ B" V( D2 C) {AllowOverride None
; M' T9 C- D0 r5 {5 Y4 L' w% p0 w+ t/ ?* L' S. W
改为
+ K3 q6 i0 Z/ Y) k; k& ` n* F+ h- M e- E; S1 R- h* C3 c" N; c" s
Options FollowSymLinks2 H) ~' ~% w5 l" B4 q0 A! w
3 v1 N* I+ p) i& P; @- YAllowOverride All
, z( l; P8 |7 Z" _4 Z1 x
' C7 r& S4 w( F' U; {, w) M" }; E' n& t就可以了。
/ D q L+ u4 H: w: ^2 Q
# z) Y5 Y+ ?- [9 o( C$ h- G$ ?3.建立.htaccess 文件
7 o( F( N$ @% M& K# K
0 K% A+ U2 X0 G u. X7 _1 O如果是在windows平台下,刚开始还真不知道怎么建立”.htaccess”文件,因为这个文件实际上没有文件名,仅仅只有扩展名,通过普通方式是无法建立这个文件的,别着急,马上告诉你三种方法:三种方法都是先建立一个htaccess.txt的文本文件(当然,这个文本文件的名字你可以随便取),然后有三种方式给这个文件重命名:& N, I J$ I4 S' t" c
! E& S4 S% t6 a' H- F& n9 `% }(1)用记事本 打开,点击文件–另存为,在文件名窗口输入”.htaccess”,注意是整个绿色部分,也就是包含英文引号,然后点击保存就行了。# _+ e7 y4 u- S1 B
V( @/ h" p' @. |/ |$ Y& r6 k(2)进入cmd命令 窗口,通过cd切换当刚建立htaccess.txt文件的文件夹,然后输入命令:rename htaccess.txt .htaccess ,然后点击键盘Enter键即可。
) t7 s* ~" u- x/ U
; G$ p, ^* h. y) a(3)通过ftp连接htaccess.txt所在文件夹,通过ftp软件重命名。
: L/ q. g# `- h* \3 G+ ?3 \
0 G. q8 B. g/ u" f0 e' ]0 L1 _$ ^- F" ?4.rewrite规则学习7 V, T" e8 l% r4 d F
" j; L) X" R9 w) D5 Z我们新建一个.htaccess文件之后,就在里面写入以下内容:
7 b5 ?( y& _9 ], Q1 \2 H( l! T/ Y* J' l! n3 \0 ?4 S
RewriteEngine on #rewriteengine为重写引擎开关on为开启off为关闭
$ x: r7 w5 s5 g' z4 o( H! t0 Y" k! }% l# W3 ~% c
RewriteRule ([0-9]{1,})$index.php?id=$1; K# `% l1 f5 M
+ G# z! `9 B$ l- N3 u7 ?我讲解一下RewriteRule:RewriteRule是重写规则,支持正则表达式的,上面的([0-9]{1,})是指由数字组成的,$是结束标志,说明是以数字结束!
" Y+ q( F1 @& z* r, s3 O) G$ G2 h _8 J0 g! n3 o
好吧,现在我们可以实现伪静态页面了,写下一下的规则:
7 F( l$ D5 I! F0 w2 y6 ?/ T
9 A) h! ^# L5 C! Z p9 d1 a<IfModule mod_rewrite.c>- ^' @& E& ]* C9 K; q
' E- I6 G0 `! z* u9 j2 U* S' K
RewriteEngine on; O) K" d" o# w3 D1 M/ }
8 e7 z* A7 J- L4 g6 b' b
RewriteRule ([a-zA-Z]{1,})-([0-9]{1,}).html$index.php?action=$1&id=$2. C* E- s( w7 s0 n6 W* J& w
# r0 H0 ^7 P, s) v+ V$ j6 V
</IfModule>
* o4 E5 h! g- v
$ Q9 I0 {( O4 f, E+ U+ w1 I1 j
; w+ q& F! F N([a-zA-Z]{1,})-([0-9]{1,}).html$是规则,index.php?action=$1&id=$2是要替换的格式,$1代表第一个括号匹配的值,$2代表第二个,如此类推!!5 a7 u5 E6 A" j/ Y! c( q
" [! n6 \; P9 b
我们写一个处理的PHP脚本:9 ] s+ D+ w: e5 N, p% v1 ~8 m
U% o1 C5 f+ G& W5 M: pindex.php
. p5 a0 N+ a8 }+ ?! L* y u1 l/ m( A! B! k/ C: S7 N4 C5 j; z
PHP代码5 o: i3 h! h9 x; D& [
<?php
: w5 p1 V$ d6 Fecho ‘你的Action是:’ . $_GET['action'];5 y q' o) Q$ F, M
echo ‘<br/>’;
% s% s1 \) i5 u. b* O* Gecho ‘你的ID是:’ . $_GET['id'];: N2 C6 e* Q1 a
?>
3 S, s: g f7 G2 x" n* j好了,我们现在在浏览器中输入: F& p5 p2 c" I- @4 z
Q# W+ w* m6 V9 |+ t- ^9 ? zlocalhost/view-12.html
/ b1 q& d( j1 @9 c' O! v |
2 Q+ B( W3 f" Z$ v) E0 A3 M( T输出的是:9 I$ j/ }2 H; H9 R: q! X: b$ r
" R# v5 d: t; Z0 D你的Action是:view% H. x. m, ~1 w
1 ^% [7 g2 N' X. {- P$ w9 r
你的ID是:12
) p4 p" |7 ]6 N/ A8 F3 l% e9 q: E7 y
|