为什么没有人写过这种伪静态规则

文章内容url

动态,不同文章只有后面的id数字不同而已

http://www.123.com/view.php?id=12

想伪静态成拼音目录 ( 域名/目录/id.html )

http://www.123.com/xinwendongtai/888.html

http://www.123.com/xinwendongtai/gongsidongtai/999.html

伪静态我现在写成这样,可以匹配正常。

rewriterule ^(.*)\.html$ /view.php?id=$1

栏目列表url

动态,不同列表只有后面的id数字不同而已

http://www.123.com/list.php?id=6

http://www.123.com/list.php?id=7

想伪静态成拼音目录 ( 域名/目录/ )

http://www.123.com/xinwendongtai/

http://www.123.com/xinwendongtai/gongsidongtai/

伪静态我现在写成这样,可以匹配正常。

rewriterule ^(.*)/$ /list.php?id=$1

现在的问题是,栏目列表的分页

http://www.123.com/list.php?id=6page=2

想伪静态成拼音目录 ( 域名/目录/list_栏目id_页码.html )

http://www.123.com/xinwendongtai/list_6_2.html

rewriterule ^(.*)/list_(\w+)_([0-9]+)\.html$ /list.php?id=$1&page=$2

为什么上面这个是错误的,跟上面的内容的伪静态冲突了?

回复讨论(解决方案)

list_6_2 这个作为一个传参应该怎么写正则?

rewriterule ^(.*)/list_(\w+)\.html$ /list.php?id=$1&page=$2

这样写好像也不对。

rewriterule ^(.*)\.html$ /view.php?id=$1

是不是跟这个冲突了

\w 是什么意思?apache 支持吗?

\w 是什么意思?apache 支持吗?

我那是乱写试试看行不行的,后来我改成这样了

栏目分页

http://www.123.com/xinwendongtai/list_6_2.html

#栏目分页

rewriterule ^(.*)/list_(.*)\.html$ /list.php?id=$1&page=$2

http://www.123.com/xinwendongtai/gongsidongtai/999.html

#文章页伪静态规则

rewriterule ^(.*)\.html$ /view.php?id=$1

标红的伪静态部分冲突了,不知道如何修改才能让它们各自正则。

用 (.*) 匹配了前面的部分了,后面的

栏目分页的最后是 list_6_2.html

内容页的最后是 999.html

就是不知道如何区分它们。

凡事都有规矩

http://www.123.com/xinwendongtai/list_6_2.html

rewriterule ^(.*)/list_([0-9]+)_([0-9]+)\.html$ /list.php?id=$1&page=$2

id=$1&page=$2

本来就是要经过 php 解析的

倒不如直接将 list_6_2.html 交给 php 解析,而减轻 apache 的负担

凡事都有规矩

http://www.123.com/xinwendongtai/list_6_2.html

rewriterule ^(.*)/list_([0-9]+)_([0-9]+)\.html$ /list.php?id=$1&page=$2

不行,会跟这个内容页的伪静态冲突

http://www.123.com/xinwendongtai/gongsidongtai/999.html

#文章页伪静态规则

rewriterule ^(.*)\.html$ /view.php?id=$1

Posted in 未分类