php 伪静态(url rewrite)apache配置!--(豆瓣https://www.douban.com/note/98028752/)8 F8 y' ]- n& c, }* _% N
- s. c$ G4 d2 x& r7 `* e1 R& ?
php 伪静态(url rewrite)apache配置: j* ~ T ? V" |( q
. q! z9 y, a+ k- Jmod_rewrite是Apache的一个非常强大的功能,它可以实现伪静态页面。下面我详细说说它的使用方法!对初学者很有用的哦!4 i! k) Y7 O9 ~# i0 u+ r$ Z
) T8 U5 z5 i/ }8 H# e% ^+ e
1.检测Apache是否支持mod_rewrite
1 b3 J, l* Z8 Y' D7 z5 u& M5 M9 r* `7 x' d
通过php提供的phpinfo()函数查看环境配置,通过Ctrl+F查找到“Loaded Modules”,其中列出了所有apache2handler已经开启的模块,如果里面包括“mod_rewrite”,则已经支持,不再需要继续设置。
2 I( x9 p* H* s6 T% ^
, q' W6 _; F3 t6 q. \* r1 a如果没有开启“mod_rewrite”,则打开目录 您的apache安装目录“/apache/conf/” 下的 httpd.conf 文件,通过Ctrl+F查找到“LoadModule rewrite_module”,将前面的”#”号删除即可。
3 {0 c% [& I% M1 H8 X+ a/ m& K& w, T' i7 f# U$ X
如果没有查找到,则到“LoadModule” 区域,在最后一行加入“LoadModule rewrite_module modules/mod_rewrite.so”(必选独占一行),然后重启apache服务器即可。
* |% Q4 A" j. E
3 E) \$ _2 g% P# l" @" X: ]2.让apache服务器支持.htaccess. `1 H; }8 O. m' c! Z; `6 e. C4 ?" c
1 G* g) I' G- c如何让自己的本地APACHE服务器支持”.htaccess”呢?其实只要简单修改一下apache的httpd.conf设置就可以让 APACHE支 持.htaccess了。打开httpd.conf文件(在那里? APACHE目录的CONF目录里面),用文本编辑器打开后,查找
# [9 I" n. ]+ n( d) F4 P2 V9 Q& t9 u
Options FollowSymLinks
0 |7 Q" s1 r+ H
$ s# a O/ E' i } F; z& uAllowOverride None
- ?; Q M: N* {3 P- g
' y0 u) F2 v, q" P2 R改为8 x! ^' B7 j, f( i
' M. ]7 j3 B: q0 Z
Options FollowSymLinks
. w4 D1 T. }0 i2 S; f
+ M* Z4 f- P6 z; V" ^8 I5 k0 @AllowOverride All
& P6 I( e1 \' x2 F2 z* [5 s% {/ q0 @0 I
就可以了。' k( u3 S ^4 n" l. E) ^# E, Q
8 \2 \7 s0 t. ~+ v7 I3.建立.htaccess 文件4 f$ [6 k' _& V9 U
_$ Z2 n1 g( O
如果是在windows平台下,刚开始还真不知道怎么建立”.htaccess”文件,因为这个文件实际上没有文件名,仅仅只有扩展名,通过普通方式是无法建立这个文件的,别着急,马上告诉你三种方法:三种方法都是先建立一个htaccess.txt的文本文件(当然,这个文本文件的名字你可以随便取),然后有三种方式给这个文件重命名:
2 s4 G# `. K) `, Z/ g. b' J
! x' m3 j- v. x, h(1)用记事本 打开,点击文件–另存为,在文件名窗口输入”.htaccess”,注意是整个绿色部分,也就是包含英文引号,然后点击保存就行了。5 K- J9 I+ i2 N! Y
T) |; s% B# S2 [' b
(2)进入cmd命令 窗口,通过cd切换当刚建立htaccess.txt文件的文件夹,然后输入命令:rename htaccess.txt .htaccess ,然后点击键盘Enter键即可。& f9 |! Q. ?8 P: I O& u. _1 ~
( n$ M: F$ I% [% u K* s(3)通过ftp连接htaccess.txt所在文件夹,通过ftp软件重命名。2 f( d3 L: x/ g- F
6 k7 w+ V) O/ A! H/ `4.rewrite规则学习
7 ]1 F: Y! I6 D4 X* `2 m7 d8 d; o1 K
我们新建一个.htaccess文件之后,就在里面写入以下内容:
- x5 v- W* g5 H- h, \ @' R7 v6 m
. D6 c" L$ y( tRewriteEngine on #rewriteengine为重写引擎开关on为开启off为关闭
H; q6 i( K K1 k5 |1 B8 |. D# s9 G( j: P3 N
RewriteRule ([0-9]{1,})$index.php?id=$1
- R3 R) t9 z2 \0 {& H6 H' m+ z9 K" G+ E
我讲解一下RewriteRule:RewriteRule是重写规则,支持正则表达式的,上面的([0-9]{1,})是指由数字组成的,$是结束标志,说明是以数字结束!- ]" u" R. M, {8 {6 K% \; h; k
6 E/ v5 V1 c0 q8 a& m- o6 M: P1 q
好吧,现在我们可以实现伪静态页面了,写下一下的规则:
4 \2 {# W2 S9 @) j/ I+ i+ U2 a7 K/ y k
<IfModule mod_rewrite.c>0 M. Y: j9 V9 e* }) x1 M1 }: S
4 q# X# `# F+ T2 ?+ c! i9 V: ?RewriteEngine on1 n0 [ x1 q8 g, m( [5 Q
1 b, F9 ]9 K6 q. [' ?. A) P
RewriteRule ([a-zA-Z]{1,})-([0-9]{1,}).html$index.php?action=$1&id=$2- u& A( |- V7 Y! h. G
2 i. k* b' m+ z7 F4 S" m4 I</IfModule>
8 Z+ E" [; X: ]8 U, C9 c
9 X1 ]% T: M: U2 P
1 m! M% |3 w4 V2 a ~([a-zA-Z]{1,})-([0-9]{1,}).html$是规则,index.php?action=$1&id=$2是要替换的格式,$1代表第一个括号匹配的值,$2代表第二个,如此类推!!$ y1 u- X& V( @# J
- h( O1 J7 b# `7 |3 ?
我们写一个处理的PHP脚本:: \0 J& _6 ?, k9 ^6 p' K4 a
7 ?! X# q" I( ]4 _& r2 K
index.php- K$ u0 M- t+ z0 z/ {, z3 M Q
5 v1 G& q& L+ O! y) v
PHP代码 f( i- ?) B% y7 Y
<?php
l, h+ T9 i; [, o: P9 Z7 ?echo ‘你的Action是:’ . $_GET['action'];
; p: S, L. Q5 r4 q" F( S$ Fecho ‘<br/>’;! w8 w, w) e6 |4 e, {! a
echo ‘你的ID是:’ . $_GET['id'];
( h R$ X$ f& B6 c3 q; e?>$ U$ q- }; w1 a
好了,我们现在在浏览器中输入:
. N- d+ a- r- m
6 T8 J3 ~3 U# h6 U+ flocalhost/view-12.html
1 ?7 w- ?% I& u: f, H$ Y+ j7 X
输出的是:
, i7 v ?, h5 }9 Z) q2 n9 J& h4 M# v/ I8 V( t# J Q
你的Action是:view( T1 W' V) x8 {- }% \( h
0 z/ I' {( [% G- d$ M
你的ID是:12
# ?% U9 A# O/ \/ r* y. n A( q6 C$ K& x$ U% Z. r! H
|