借助.htaccess伪静态组件,我们可以实现很多网页需要的功能,比如URL重写、301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档,其中使用最多的就是URL重写。然而,URL重写指令RewriteRule最多只能携带9个参数,超过9个参数后就无法正常解析。在实际应用中,多于9个参数传递的情况比比皆是,那么,咱们就来研究一下如何突破.htaccess伪静态的9个参数限制。
既然按普通的方式无法实现,那么,可以将代码进行拆分成2行,如下所示:
RewriteRule ^products(.*?)-(.*?)-(.*?)-(.*?)-(.*?)-(.*?)-(.*?)-(.*?)-(.*?).html$ $9&attr1=$1&attr2=$2&attr3=$3&attr4=$4&attr5=$5&attr6=$6&attr7=$7&attr8=$8 [C,NC]
RewriteRule ^(.*?)-(.*?)-(.*?)-(.*?)-(.*?)-(.*?)$ products.php?$7&attr9=$1&attr10=$2&attr11=$3&attr12=$4&attr13=$5&attr14=$6 [QSA,L,NC]
需要注意的是,第一行只有9个参数,其中,第9个参数的目的是为了将从第9个起的参数做一个连接并传递给下一行的代码。其中后的C是起到链接其后命令的作用。NC是对大小写不敏感。这样一来,咱们可以用RewriteRule传递更多参数了。
笔者在研究这个问题的时候,走了一些弯路,主要是对链接参数一直没正确理解。程序员朋友可以研究一下上述代码,若有不明白的,欢迎咨询沟通,以便少走一些弯路。
本文网址:https://yiqnet.com:443/news/n822.html
本文由艺琼网络原创,禁止转载、复制、传播,深圳市艺琼网络科技有限公司保留著作权。