301重定向的作用:1.规范网址;2.排除了重复页面;3.增加网址权重 下面我们就利用.htaccess 实现ECSHOP网站的301重定向,
% L: L' c$ {, a将“不带WWW的域名”重定向到“带WWW的主域名”上: 首先打开你的ECSHOP网站根目录下的 .htaccess 文件,在" a1 I" Q9 G" M7 ^* R7 U' ^* J5 h
. z2 C* e9 K6 m" BRewriteEngine On
( ^0 I" V3 z( o9 k* A! A
' ~' C3 u) W9 y4 w/ V# l7 e下面增加两条指令
/ R, d. Z0 Y- I! V' E
4 M- Q7 i# t* Q0 I+ `6 K0 ]RewriteCond %{http_host} ^主域名.com [NC]% B; Y' Q2 D$ M- K) [, r- }3 B- [
RewriteRule ^(.*)$ http://www.主域名.com/$1 [R=301,L]8 C/ F( X0 g* x* E8 U" K
2 y* h7 ~- e0 q. A( ~$ \
至此就大功告成了,很简单吧,6 B& p0 J* u- ^% |3 G/ b
下面章节属于题外话,捎带着讲点别的。 如果你的ECSHOP网店绑定了好几个域名,
- j1 R6 \- M$ d你还可以用301将绑定的其他域名重定向到主域名上: 注意这个地方,有RewiteEnginee on这句,
7 R! r6 R: O+ ` V. ~. ]RewriteEngine on
C* y1 t1 y5 DRewriteCond %{HTTP_HOST} ^其他域名.com$ [OR]1 ]2 Y' Z0 U7 X/ o9 U
RewriteCond %{HTTP_HOST} ^www.其他域名.com$' Q" [6 B4 [9 b2 M
RewriteRule ^(.*)$ http://www.主域名.com/$1 [R=301,L] =========================================================================== 下面再捎带着讲一下 RewriteCond 指令: RewriteCond详解8 K4 N+ _( h' ^( ]- r/ b; ?
Syntax: RewriteCond TestString CondPattern [flags] RewriteCond指令定义一条规则条件。放在 RewriteRule 指令前面。
4 y" i8 c' a" i0 [$ H' t在一条RewriteRule指令前面可能会有一条或多条RewriteCond指令,7 c e0 f" h3 ]! H Y2 e
只有当自身的模板(pattern)匹配成功且这些条件也满足时规则才被应用于当前URL处理。 TestString是一个字符串,除了包含普通的字符外,还可以包括下列的可扩展结构: %{ NAME_OF_VARIABLE } , 服务器变量。 变量的名字如下表(分类显示)/ T- r! m O8 Z6 m# T) q- l. I
HTTP headers:% `1 m# D8 v/ E
connection & request: server internals: system stuff: - l8 z, M4 B- M% P
HTTP_USER_AGENT REMOTE_ADDR DOCUMENT_ROOT TIME_YEAR! u7 @7 j; n0 Z4 C" e9 e2 D
HTTP_REFERER REMOTE_HOST SERVER_ADMIN TIME_MON
# S+ |4 M5 v+ o t d: Z. T% nHTTP_COOKIE REMOTE_USER SERVER_NAME TIME_DAY8 V: B& ?& j* H; R
HTTP_FORWARDED REMOTE_IDENT SERVER_ADDR TIME_HOUR
- ~! [% Q4 b- ]& Z& W$ THTTP_HOST REQUEST_METHOD SERVER_PORT TIME_MIN7 l0 i t" S! J I' J- q* F
HTTP_PROXY_CONNECTION SCRIPT_FILENAME SERVER_PROTOCOL TIME_SEC x7 w8 h+ ^( m6 q$ p
HTTP_ACCEPT PATH_INFO SERVER_SOFTWARE TIME_WDAY
/ T8 l9 C' s$ L! h4 c QUERY_STRING TIME
, L" _8 \; [ }( f7 A( f6 u AUTH_TYPE RewriteCond 指令后面还可带 Flag, 现在只有2个可用,
# ?+ Y" i- d5 n# R6 A一个是 NC|nocase, 不区分大小写的意思. 一个是 OR|ornext 表示连接下一个条件的意思. 4 Z9 n' e; L2 K$ b8 t8 O# n) y5 h
RewriteCond 实际需要使用情况比如要判断一个条件成真的时候才执行相关的重写操作. 紧接着它下面的 RewriteRule 总是在RewriteCond 条件判断为真的时候才被执行. 我们来看下面的一个例子:" ?+ |& C" v+ T" h# [9 q
#开启服务器重写模式5 W" N& |* @, f& G
RewriteEngine on6 X& H* W: I) ?1 W7 `
#来自 tuyuanma.com 的连接访问本站时都只能访问 test.php 这页.
% \7 g+ I! D9 BRewriteCond %{HTTP_REFERER} (tuyuanma.com); R8 u0 U y8 w
RewriteRule (.*)$ test.php
, |4 f3 p4 S& @7 r#来自 tuyuanma.com 的连接访问本站时都只能访问 newTest.php 这页.
- a- N; v& S5 b3 {) z* a1 yRewriteCond %{HTTP_REFERER} (tuyuanma.com)
7 u# z# K# q8 h$ N* f, @8 Z# RRewriteRule (.*)$ newTest.php OK, RewriteCond 就介绍到这里了. 其实很简单. 就想程序里的 if() 这样的效果. : P' d# T( h! M# ]9 s- I3 G
|