为什么我的分页在mod重写后不起作用?

时间:2011-11-14 03:45:44

标签: .htaccess mod-rewrite pagination rewrite

在重写我的网址file.php?style=foo&page=2之前,工作正常。

重写后,它停止工作,并在最后与?page变量保持在同一页面,就好像它没有被抓住一样:

foo-new?page=2

重写后,页面参数停止处理干净的网址。

以下是我的重写规则:

RewriteCond %{QUERY_STRING} ^style=([A-Za-z-]+)/?$
RewriteRule ^file\.php$ %1-new? [NS,R=301,L]
RewriteRule ^([A-Za-z-]+)-new/?$ file.php?style=$1&redirect=no [NS]

1 个答案:

答案 0 :(得分:0)

所以我翻译你想做的事情,我改变你的规则并写下来。请告诉我,我是对还是错。

您想检查查询字符串中是否有可选参数“style”。

RewriteCond %{QUERY_STRING} ^style=([A-Za-z-]+)/?$

^以及/?$有什么意义?删除它们:

RewriteCond %{QUERY_STRING} style=([A-Za-z-]+)

这种方式更清晰,仍然可以满足您的需求。

RewriteRule ^file\.php$ %1-new? [NS,R=301,L]

?有什么意义?删除它:

RewriteRule ^file\.php$ %1-new [NS,R=301,L]

所以,请尝试这些规则并告诉我它们是否有效,如果没有,请更具体或提供您想要重写的真实URL样本:

RewriteCond %{QUERY_STRING} style=([A-Za-z-]+)$
RewriteRule ^file\.php$ %1-new [QSA,NS,R=301,L]
RewriteRule ^([A-Za-z-]+)-new/$ file.php?style=$1&redirect=no [NS]