关于伪静态列表分页问题

jackallin 2018-10-18 09:37:35
index.php?uid=$1 和 index.php?mtype=0&uid=$1 这两个是不是有冲突

分类调得出来,列表分页调不出来

如下:

(.*?)-([A-Za-z0-9_-]+)$ index.php?uid=$1&action=$2 这个调用没有问题

(.*?)-([A-Za-z0-9_-]+)-([A-Za-z0-9_-]+)$ index.php?mtype=0&uid=$1&action=products&totalresult=$2&pageno=$3  这个分页就出现问题了,调用不出来,index.php?mtype=0&uid=$1这段跟上面重复了,这个要怎么解决
...全文
891 41 打赏 收藏 转发到动态 举报
写回复
用AI写文章
41 条回复
切换为时间正序
请发表友善的回复…
发表回复
jackallin 2018-10-20
  • 打赏
  • 举报
回复
会员后台我也参照过了,分页如不出现相同的配置出现都可以访问,但出现两个相同文件名配置,就变成了重叠,这个我不知道怎么解决,怎么试都不行。
jackallin 2018-10-20
  • 打赏
  • 举报
回复
^(.*)$ iindex.php/$1 [QSA,PT,L]

这个加上去,直接出错,变成访问index.html,找不到会员页面,我主页都是静态的,只有会员页伪静态
jackallin 2018-10-20
  • 打赏
  • 举报
回复
http://xxxx/用户id-products

RewriteRule ^(.*?)-([A-Za-z0-9_-]+)\/?$ index.php?uid=$1&action=$2

这个是我的分类配置

http://xxx/用户id-products?mtype=0&uid=用户id&action=products&totalresult=22&pageno=2(分类配匹结果)

RewriteRule ^(.*?)-([0-9]+)-([0-9]+)\/?$ index.php?mtype=0&uid=$1&action=products&totalresult=$2&pageno=$3 [L]

这个是我的分页配置(手动访问是这样的:用户id-products-22-2?mtype=0&uid=用户id&action=products&totalresult=22&pageno=1)

引用 35 楼 xuzuning 的回复:
对每一种可能的 url 写法都写上一条重写规则,显然是加重了 apache 的负担。因为并不是所有 url 都需要重写的

而 TP 之类框架用 RewriteRule ^(.*)$ iindex.php/$1 [QSA,PT,L]
将复杂的规则隐去,而将难题推给你熟悉的 php 的做法还是很可取的
因为处理这类问题是 php 的强项

再者说,你这样的规则
RewriteRule (.*?)-([A-Za-z0-9_-]+)$ index.php?uid=$1&action=$2
不还是把拆解任务交给了 php 吗?
xuzuning 2018-10-20
  • 打赏
  • 举报
回复
对每一种可能的 url 写法都写上一条重写规则,显然是加重了 apache 的负担。因为并不是所有 url 都需要重写的

而 TP 之类框架用 RewriteRule ^(.*)$ iindex.php/$1 [QSA,PT,L]
将复杂的规则隐去,而将难题推给你熟悉的 php 的做法还是很可取的
因为处理这类问题是 php 的强项

再者说,你这样的规则
RewriteRule (.*?)-([A-Za-z0-9_-]+)$ index.php?uid=$1&action=$2
不还是把拆解任务交给了 php 吗?
xuzuning 2018-10-20
  • 打赏
  • 举报
回复
贴出你访问时的 url
xuzuning 2018-10-20
  • 打赏
  • 举报
回复
RewriteCond %{REQUEST_FILENAME} !-d #如果目录存在,就不做 url 重写
RewriteCond %{REQUEST_FILENAME} !-f #如果文件存在,就不做 url 重写

jackallin 2018-10-20
  • 打赏
  • 举报
回复
RMB求助,10-30块,看解决问题难度,有没有帮解决一下,唉,就差这一个用不了
jackallin 2018-10-20
  • 打赏
  • 举报
回复
我整站都调试好了,会员后台伪静态,空间伪静态,全部都可以使用,就差这个分页翻不了页。
jackallin 2018-10-20
  • 打赏
  • 举报
回复
RMB解决问题,总不能帮忙,一点谢都没有也不行,所以想了想还是要给点,我就差这一个分页问题解决不了,这个分页有涉及到两次需要调用到,转不过来
jackallin 2018-10-20
  • 打赏
  • 举报
回复
额,我用户id带了中文,也可以改成数字,但觉得数字不好认,就是想让中文%乱码转为正常的
xuzuning 2018-10-20
  • 打赏
  • 举报
回复
转码问题?
一般的说,apache 不允许在 url 中出现中文,少数版本可以允许 utf-8 字符。当然这不包括参数部分,但参数部分在重写时丢弃了

人民币就算了,作为版主那就太不道德了
jackallin 2018-10-20
  • 打赏
  • 举报
回复
50元,加我124318556处理一下,我还有一个小问题也要处理,是转码问题

引用 39 楼 xuzuning 的回复:
你自己可以另写一个测试程序,来测试一下
比如 typelist.php
<?php
echo '<pre>';
print_r($_GET);
echo '</pre>';
?>

<p>
<a href='/Usruid-products'>Usruid-products</a><br>
<a href='/Usruid-products-123-456'>Usruid-products-123-456</a><br>
<a href='/Usruid-products-123'>Usruid-products-123</a><br>

规则
RewriteRule ^(.*?)-([0-9]+)-([0-9]+)\/?$   typelist.php?mtype=0&uid=$1&action=products&totalresult=$2&pageno=$3 [L]
RewriteRule ^(.*?)-([A-Za-z0-9_-]+)\/?$ typelist.php?uid=$1&action=$2 [L]

点击 Usruid-products
Array
(
[uid] => Usruid
[action] => products
)

点击 Usruid-products-123-456
Array
(
[mtype] => 0
[uid] => Usruid-products
[action] => products
[totalresult] => 123
[pageno] => 456
)

点击 Usruid-products-123
Array
(
[uid] => Usruid
[action] => products-123
)

你自己看看,有不对得地方吗?
xuzuning 2018-10-20
  • 打赏
  • 举报
回复
你自己可以另写一个测试程序,来测试一下
比如 typelist.php
<?php
echo '<pre>';
print_r($_GET);
echo '</pre>';
?>

<p>
<a href='/Usruid-products'>Usruid-products</a><br>
<a href='/Usruid-products-123-456'>Usruid-products-123-456</a><br>
<a href='/Usruid-products-123'>Usruid-products-123</a><br>

规则
RewriteRule ^(.*?)-([0-9]+)-([0-9]+)\/?$   typelist.php?mtype=0&uid=$1&action=products&totalresult=$2&pageno=$3 [L]
RewriteRule ^(.*?)-([A-Za-z0-9_-]+)\/?$ typelist.php?uid=$1&action=$2 [L]

点击 Usruid-products
Array
(
[uid] => Usruid
[action] => products
)

点击 Usruid-products-123-456
Array
(
[mtype] => 0
[uid] => Usruid-products
[action] => products
[totalresult] => 123
[pageno] => 456
)

点击 Usruid-products-123
Array
(
[uid] => Usruid
[action] => products-123
)

你自己看看,有不对得地方吗?
jackallin 2018-10-19
  • 打赏
  • 举报
回复
还是搞不定呀,有没有人帮忙,就差这一个
jackallin 2018-10-19
  • 打赏
  • 举报
回复
124318556

引用 28 楼 weixin_43459722 的回复:
我现在就是变成手动可以访问,不会自动去匹配 qqqq
xuzuning 2018-10-18
  • 打赏
  • 举报
回复
你没有 [L] (匹配到了就返回)自然就是一塌糊涂的
不管怎么说,手册总是要看的,无论是在线手册或是下载的离线手册 https://www.baidu.com/s?wd=apache2%E5%B8%AE%E5%8A%A9&ie=UTF-8
jackallin 2018-10-18
  • 打赏
  • 举报
回复
按照你的方法改变也不行:
index.php?uid=$1 这一段出现了问题:
如下:

(.*?)-([0-9]+)-([0-9]+)$ index.php?mtype=0&uid=$1&action=products&totalresult=$2&pageno=$3 [L]

上面这段用数字代替没有字母,然后匹配出来是 用户id-22-22 (单独访问可以调用,后面多出了mtype=0&uid=$1&action=products&totalresult=$2&pageno=$3)

(.*?)-([A-Za-z0-9_-]+)$ index.php?uid=$1&action=$2

上面这段匹配是:用户id-分类(调用分类是正常的,但分页就出现两个用户id,mtype=0&uid=$1&action=products&totalresult=$2&pageno=$3这段也没有匹配出来)


引用 14 楼 xuzuning 的回复:
规则 (.*?)-([A-Za-z0-9_-]+)$
包含了规则 (.*?)-([A-Za-z0-9_-]+)-([A-Za-z0-9_-]+)$
至少应写作
(.*?)-([A-Za-z0-9_]+)-([A-Za-z0-9_]+)$
(.*?)-([A-Za-z0-9_-]+)$
即 - 不能出现在通配之列
为防止后一条覆盖了前一条的行为,应提前结束规则的匹配(已经匹配到了,再去做其他匹配尝试,是没有意义的)
(.*?)-([A-Za-z0-9_]+)-([A-Za-z0-9_]+)$ index.php?mtype=0&uid=$1&action=products&totalresult=$2&pageno=$3 [L]
(.*?)-([A-Za-z0-9_-]+)$ index.php?uid=$1&action=$2
xuzuning 2018-10-18
  • 打赏
  • 举报
回复
规则 (.*?)-([A-Za-z0-9_-]+)$
包含了规则 (.*?)-([A-Za-z0-9_-]+)-([A-Za-z0-9_-]+)$
至少应写作
(.*?)-([A-Za-z0-9_]+)-([A-Za-z0-9_]+)$
(.*?)-([A-Za-z0-9_-]+)$
即 - 不能出现在通配之列
为防止后一条覆盖了前一条的行为,应提前结束规则的匹配(已经匹配到了,再去做其他匹配尝试,是没有意义的)
(.*?)-([A-Za-z0-9_]+)-([A-Za-z0-9_]+)$ index.php?mtype=0&uid=$1&action=products&totalresult=$2&pageno=$3 [L]
(.*?)-([A-Za-z0-9_-]+)$ index.php?uid=$1&action=$2



jackallin 2018-10-18
  • 打赏
  • 举报
回复
我现在最大的问题就是这个分页,其它全部调用都可以
jackallin 2018-10-18
  • 打赏
  • 举报
回复
是新手,刚学习不久,只懂写一点,我都是用.htaccess这个来配置规则,有不少都是参照例子,自己写出来
加载更多回复(21)

21,881

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧