php 伪静态(url rewrite)apache配置!--(豆瓣https://www.douban.com/note/98028752/)( g8 Y9 a7 j$ O( S$ v
7 E( ?' t& k9 o) D! r
php 伪静态(url rewrite)apache配置5 a0 ?- _3 g4 b% {( g# y5 s
- z C6 s! T; G0 cmod_rewrite是Apache的一个非常强大的功能,它可以实现伪静态页面。下面我详细说说它的使用方法!对初学者很有用的哦! r6 i: J8 e, \% l& {
I: N9 w' o6 {5 [7 P2 N
1.检测Apache是否支持mod_rewrite
( d, Y; E* L/ a1 e* s: ?- m: A
$ q* |: L6 f/ F通过php提供的phpinfo()函数查看环境配置,通过Ctrl+F查找到“Loaded Modules”,其中列出了所有apache2handler已经开启的模块,如果里面包括“mod_rewrite”,则已经支持,不再需要继续设置。5 L$ N W! @3 k5 O& Z6 P
* ]! L, H+ ]2 |6 F' v
如果没有开启“mod_rewrite”,则打开目录 您的apache安装目录“/apache/conf/” 下的 httpd.conf 文件,通过Ctrl+F查找到“LoadModule rewrite_module”,将前面的”#”号删除即可。
7 b& F$ S3 J7 B6 m3 A: E! r/ a$ u; U3 g0 x: r
如果没有查找到,则到“LoadModule” 区域,在最后一行加入“LoadModule rewrite_module modules/mod_rewrite.so”(必选独占一行),然后重启apache服务器即可。
6 v* x5 z4 U* V. j( D* |4 i8 Q! i1 C0 {" m: Y
2.让apache服务器支持.htaccess
2 u% U. Q* r! c8 e2 `' Z
6 |8 k$ P/ s' f1 G" j( y如何让自己的本地APACHE服务器支持”.htaccess”呢?其实只要简单修改一下apache的httpd.conf设置就可以让 APACHE支 持.htaccess了。打开httpd.conf文件(在那里? APACHE目录的CONF目录里面),用文本编辑器打开后,查找
, O M+ _6 M' E/ y1 g% L' ?/ e0 Y+ {- c
Options FollowSymLinks2 Z. d( a- m5 y' P- w8 z) i) Q
4 p: \" O6 q# rAllowOverride None# K$ f8 O# E9 O& P! y
9 K/ d, W$ H/ j' e6 q$ Y+ A改为# `1 J& x6 v" v* D/ a
1 D4 B2 J: P" A1 Z0 ZOptions FollowSymLinks* J1 V/ G$ {$ b
$ u" a4 h0 Z: f8 m* e w) ~4 ]* jAllowOverride All
1 L3 J/ H5 m/ R+ {4 n- I2 x' e: M- V3 A' v7 L
就可以了。
g6 q6 L% \& F7 Y- i( X% r
|% a6 M0 i7 e4 @* P3.建立.htaccess 文件- P! N B8 L; G% j# R" i/ j8 E, h( l
' w- v; }- C" F# s, G) x1 f如果是在windows平台下,刚开始还真不知道怎么建立”.htaccess”文件,因为这个文件实际上没有文件名,仅仅只有扩展名,通过普通方式是无法建立这个文件的,别着急,马上告诉你三种方法:三种方法都是先建立一个htaccess.txt的文本文件(当然,这个文本文件的名字你可以随便取),然后有三种方式给这个文件重命名:2 W& ]7 N3 `$ O
) z7 z6 Q" J0 m+ J/ z. r(1)用记事本 打开,点击文件–另存为,在文件名窗口输入”.htaccess”,注意是整个绿色部分,也就是包含英文引号,然后点击保存就行了。
" s/ Y) p' q, l$ s2 U4 T4 a5 O8 y9 J# `0 a1 i
(2)进入cmd命令 窗口,通过cd切换当刚建立htaccess.txt文件的文件夹,然后输入命令:rename htaccess.txt .htaccess ,然后点击键盘Enter键即可。
3 D# w+ Z2 O9 W% p8 V/ n7 y* L
! }3 E/ P5 H5 T(3)通过ftp连接htaccess.txt所在文件夹,通过ftp软件重命名。
9 i9 P' Z0 @ Y8 w/ Q
h' t0 j/ A; S" V4.rewrite规则学习
" F" S3 A A0 K8 Y3 N- K& ^2 q; r( v9 i0 F* Y
我们新建一个.htaccess文件之后,就在里面写入以下内容:
; O6 ]1 E" _/ Z) e) L9 z. S
* q5 N, @/ @( @9 p0 a& mRewriteEngine on #rewriteengine为重写引擎开关on为开启off为关闭
X5 J; M- M4 a
4 k! s) r- \6 T5 nRewriteRule ([0-9]{1,})$index.php?id=$1
( y9 x6 a, A7 `: i& a9 z, I$ g( K! T6 `
2 v9 d2 R9 b% K* A8 ^我讲解一下RewriteRule:RewriteRule是重写规则,支持正则表达式的,上面的([0-9]{1,})是指由数字组成的,$是结束标志,说明是以数字结束!
5 X1 j% ?& C0 p' d9 a9 h2 d9 e/ B7 } q: o1 o* A7 v4 q
好吧,现在我们可以实现伪静态页面了,写下一下的规则:" v' n, z, x( s7 Y* K1 `* B. I
6 P0 m0 q0 Y3 }" p" Y# Q
<IfModule mod_rewrite.c>( r9 S( c6 @, V4 h4 {7 Q
1 I! e5 Y7 E+ C, {
RewriteEngine on, w+ P. b3 W! t
" T$ P# }4 t' DRewriteRule ([a-zA-Z]{1,})-([0-9]{1,}).html$index.php?action=$1&id=$2$ ]- i4 u, [6 I0 N) c5 E
H5 S1 r5 Y. Z: X4 L8 y/ U1 Y t u</IfModule>
: t* R: q1 I: `0 u W9 u+ z' ~) O
# ?& Y+ g/ ^3 v- T
" c* \; p* x# p9 s& K* Q([a-zA-Z]{1,})-([0-9]{1,}).html$是规则,index.php?action=$1&id=$2是要替换的格式,$1代表第一个括号匹配的值,$2代表第二个,如此类推!!
$ P# L o2 U+ N" u, O4 x8 W6 |1 a9 e! Q6 |% y- ^3 y
我们写一个处理的PHP脚本:8 o" k- j" D; }& p3 ]5 ~
1 {6 Y6 d# d y: P tindex.php
2 `* w% l1 ]: Z9 I: \. U: t8 ]4 w6 j2 E5 c% ^* q- a
PHP代码
( `+ f& B$ V7 V5 B<?php
6 }% x; D3 @& ?" kecho ‘你的Action是:’ . $_GET['action'];
1 i8 X* \( E, j' i+ c9 F) Pecho ‘<br/>’;
( [" n1 w. E9 n3 ]4 s6 D+ Hecho ‘你的ID是:’ . $_GET['id'];( Q$ { C: {2 S1 P4 @
?>) t+ Q' G9 I' ?1 S; Q. @
好了,我们现在在浏览器中输入:
% O1 I% F3 ?5 L/ |" g! [8 U& O9 q1 O6 @6 E
localhost/view-12.html% k1 a5 M$ |. D9 |7 I, J' Q
, o/ [9 n& T5 u$ G$ B4 _输出的是:' u. x' ]3 y1 L
- ^# j9 o/ j' O$ T" Z你的Action是:view }! m" @* e6 l: e5 }( ~6 s
- g9 x$ e& p7 k' |8 T( |+ ]
你的ID是:12
. H: v8 r2 m7 X0 k4 k4 Z9 |2 A) |* z6 c- X, K! J4 e
|