Apache伪静态和重定向,可以写到根目录的.htaccess文件中
首先写上RewriteEngine On,声明加载mod_rewrite模块,然后开始写规则
假设访问daxiao.show时,跳转www.baidu.com,后面的参数也要跟着,不能丢
RewriteCond %{HTTP_HOST} ^daxiao\.show$
RewriteRule ^(.*)$ http://www.mbanews.net/$1 [L]
由此简单案例可以看出:
RewriteCond 匹配访问的域名
RewriteRule 后面跟的是访问域名的参数,不需要再加域名信息,再后面是要跳转的域名
假设访问img.daxiao.show时,跳转img.baidu.com,后面的参数不变
RewriteCond %{HTTP_HOST} ^(.+)\.daxiao\.show$
RewriteRule ^(.*)$ http://%1.baidu.com/$1 [L]
由此案例看出,匹配的二级域名,在跳转的域名处使用“%1”表示
通过上面的简单案例,延伸下面案例:
访问m.test.daxiao.show时,跳转到m.test.daxiao.show/index.php?m=wap
访问m.test.daxiao.show/school-5-10.html,跳转到m.test.daxiao.show/index.php?m=wap&c=index&a=show&catid=5&id=10
RewriteCond %{HTTP_HOST} ^m.test.daxiao.show$
RewriteRule ^$ http://m.test.daxiao.show/index.php?m=wap [L]
RewriteRule ^school-(.*)-(.*).html$ /index.php?m=wap&c=index&a=show&catid=$1&id=$2 [L]
由上面的案例看出,同一个域名多个RewriteRule规则时,RewriteCond匹配主域只需写一次即可
上面每个RewriteRule最后面都会有“[L]”,这个表示rewrite时,不改变显示的url
不过这个在只有主域名没有参数时、rewrite到不同主域名时,不生效,浏览器显示的url将被强制改变。