apache伪静态参数超过9个的解决办法

2013-11-28 寒川 计算机

apache服务器,利用.htaccess做伪静态筛选,由于条件比较多,且筛选的参数和值均为伪静态参数,一个7个筛选条件就多大14个伪静态参数。简直坑爹啊。下面是解决办法:

RewriteRule ^a-(a|b|c|d|e|f|g)([0-9]+)\.html /a.php?$1=$2 [L]
RewriteRule ^a-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)\.html /a.php?$1=$2&$3=$4 [L]
RewriteRule ^a-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)\.html /a.php$1=$2&$3=$4&$5=$6 [L]
RewriteRule ^a-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)\.html /a.php?$1=$2&$3=$4&$5=$6&$7=$8 [L]
#上面参数未超过9个,下面超过9个参数的情况。
RewriteRule ^a-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)-(.*)\.html a-$9\.html$1=$2&$3=$4&$5=$6&$7=$8 [C,NC]
RewriteRule ^a-(a|b|c|d|e|f|g)([0-9]+)\.html(.*) /a.php?$1=$2&$3 [QSA,L,NC] #结合上一行,共计10个参数。
RewriteRule ^a-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)\.html(.*) /a.php?$1=$2&$3=$4&$5 [QSA,L,NC] #结合第6行,共计12个参数。
RewriteRule ^a-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)\.html(.*) /a.php?$1=$2&$3=$4&$5=$6&$7 [QSA,L,NC] #结合第6行,共计14个参数。
RewriteRule ^a-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)-(a|b|c|d|e|f|g)([0-9]+)\.html(.*) /a.php?$1=$2&$3=$4&$5=$6&$7=$8&$9 [QSA,L,NC] #结合第6行,共计16个参数。

访问地址分别如下:

a-a1.html 对应url参数为a.php?a=1(其中参数a可以为b、c、d、e、f、g)
a-a1-b1.html 对应url参数为a.php?a=1&b=1
……
a-a1-b1-c1-d1-f1-g1.html 对应url参数为a.php?a=1&b=1&c=1&d=1&e=1&f=1&g=1

对于上述第4行,共计14个伪静态参数。

标签: apache 伪静态 htaccess 超过9个参数

评论(0) 浏览(8892)

.htaccess非伪静态url跳转到伪静态url再伪静态

2013-5-16 寒川 计算机

如何使用.htaccess使非伪静态页面301跳转到伪静态页面然后再跳转?这是一个比较蛋疼的跳转。因为不小心就会搞成死循环导致页面无法打开。好在问题最终解决了。记录并分享出来,给需要的朋友借鉴借鉴。

规则如下:

RewriteRule ^article-([0-9]+).html$ /article.php?id=$1&r=1 [L]

RewriteCond %{QUERY_STRING} ^id=([0-9]+)$ [NC]

RewriteRule ^article.php$ /articlel-%1.html? [L,R=301]

 

问题就解决了。

标签: 伪静态 htaccess 转向

评论(0) 浏览(7211)

.htaccess重写标记含义

2013-4-10 寒川 网页编程

最近鼓捣伪静态,百度来的资料保存于博客,方便日后查阅。                                             

R-Redirect:发出一个HTTP重定向

F-Forbidden:禁止对URL地址的存取

G-Gone:标记URL地址不存在

P-Proxy:将URL地址传递给mod_proxy

L-Last:停止处理接下来的规则

N-Next:再次重第一个规则开始处理,但是使用当前重写后的URL地址

C-Chain:将当前的规则和紧随其后的规则链接起来

T-Type:强制执行指明的MIME类

NS-Nosubreq:只在没有任何内部子请求执行时运行本脚本

NC-NocaseURL:地址匹配对大小写不敏感

QSA-Qsappend:在新的URL地址后附加查询字符串部分,而不是替代

PTPassthrough将重写后的URL地址传递给另一个Apache模块进行进一步处理

S-Skip:忽略之后的规则

E-Env:设置环境变量

 

标签: 伪静态 htaccess

评论(1) 浏览(12883)

discuz分区伪静态

2010-9-23 寒川 网页编程

前几天装了discuz7.2,并用的伪静态,直到刚刚才发现discuz伪静态不全,其分区居然仍然为动态页面。这可不太好,要么统一用动太,要么统一用静态,百度google了办天,没有任何结果。于是只好自己动手了。废话不多说,请看仔细了(以下教程以disucz默认模板为例,其它模板可能有点出入):
一、修改模板,打开templates/default/discuz.htm文件,大约在40行处找到如下代码:
<h3><a href="$indexname?gid=$cat[fid] " style="{if $cat[extra][namecolor]}color: {$cat[extra][namecolor]};{/if}">$cat[name]</a></h3>

将其改为:
<h3><a href="forum-$cat[fid].html " style="{if $cat[extra][namecolor]}color: {$cat[extra][namecolor]};{/if}">$cat[name]</a></h3>

请注意红色部分的变化。

二、修改.htaccess,在htaccess中增加一行如下:
RewriteRule ^(.*)/forum-([0-9]+)\.html$ $1/index\.php\?gid=$2

注意:修改首页文件的朋友注意棕色部分的index\.php改为您的首页文件。

给个演示地址:http://www.gamelue.com/forum 请查看论坛分区部分的伪静态。

标签: discuz 伪静态

评论(3) 浏览(13558)

Powered by emlog 蜀ICP备12030225号

川公网安备 51042102000001号

sitemap