45IT.COM- 电脑学习从此开始!
DIY硬件教程攒机经验装机配置
设计Photoshop网页设计特效
系统注册表DOS系统命令其它
存储主板显卡外设键鼠内存
维修显卡CPU内存打印机
WinXPVistaWin7unix/linux
CPU光驱电源/散热显示器其它
修技主板硬盘键鼠显示器光驱
办公ExcelWordPowerPointWPS
编程数据库CSS脚本PHP
网络局域网QQ服务器
软件网络系统图像安全
页面导航: 首页 > 电脑学院 > 服务器技术 >

Apache伪静态时rewrite匹配参数超过10个的处理方法

电脑软硬件应用网 45IT.COM 时间:2014-06-30 22:42 作者:佚名

我们知道,在伪静态中 rewrite 只能定义到$9的,超过了便无效了,而实际使用中却有需要9个以上参数的时候,那么怎么来解决呢?详见下文分解。


RewriteRule反向引用 ,引用方法是:$N (0 <= N <= 9)引用当前(带有若干RewriteRule指令的)RewriteCond中的与Pattern匹配的分组成分(圆括号!)。
RewriteCond反向引用 ,引用方法是:%N (1 <= N <= 9)引用当前若干RewriteCond条件中最后符合的条件中的分组成分(圆括号!)


授人以鱼不如授人以渔,下面来给大家演示下实现的过程


首先你要有个环境,要支持伪静态,然后测试。新建一个以1命名的web文件夹,并建立php文档,命名为:index.php 文档代码如下:
<?PHP
echo $_GET['a'].'<br>';
echo $_GET['b'].'<br>';
echo $_GET['c'].'<br>';
echo $_GET['d'].'<br>';
echo $_GET['e'].'<br>';
echo $_GET['f'].'<br>';
echo $_GET['g'].'<br>';
echo $_GET['h'].'<br>';
echo $_GET['i'].'<br>';
echo $_GET['j'].'<br>';
echo $_GET['k'].'<br>';
echo $_GET['l'].'<br>';
echo $_GET['m'].'<br>';
echo $_GET['n'].'<br>';
?>
复制代码
这个php来实现url传递参数,a-n,14个参数,超过了9个


接着来写.htaccess文件
RewriteEngine On
RewriteRule ^a(.*)b(.*)c(.*)d(.*)e(.*)f(.*)g(.*)h(.*)$ $8&a=$1&b=$2&c=$3&d=$4&e=$5&f=$6&g=$7 [C,NC]
RewriteRule ^(.*)i(.*)j(.*)k(.*)l(.*)m(.*)n(.*)$  index.php?$8&h=$1&i=$2&j=$3&k=$4&l=$5&m=$6&n=$7  [QSA,L,NC]


RewriteRule  ^index-(.*?)-(.*?)-(.*?)-(.*?)-(.*?)-(.*?)-(.*?)-(.*?)-(.*?).html$  $9&a=$1&b=$2&c=$3&d=$4&e=$5&f=$6&g=$7&h=$8  [C,NC]
RewriteRule ^(.*?)-(.*?)-(.*?)-(.*?)-(.*?)-(.*?)$ index.php?$7&i=$1&j=$2&k=$3&l=$4&m=$5&n=$6 [QSA,L,NC]
复制代码
这里我写了两种方式,来方便大家直接使用


1.http://127.0.0.1/1/a1b2c3d4e5f6g7h8i9j10k11l12m13n14
2. http://127.0.0.1/1/index-1-2-3-4-5-6-7-8-9-10-11-12-13-14.html


如果你运行上面地址会出现1-14的数字则说明你的配置成功了

顶一下
(1)
16.7%
踩一下
(5)
83.3%
------分隔线----------------------------
无法在这个位置找到: baidushare.htm
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片
推荐知识