尝试使用.htaccess重写进行分页

时间:2012-02-25 04:07:17

标签: php .htaccess

所以我为自己感到骄傲,因为有史以来第一次,我实际上想出了如何在不寻求帮助的情况下更新.htaccess文件(对我来说是一个新的里程碑)。

这是我添加的内容:

RewriteRule albums/(.*)/(.*)/(.*)/ albums.php?language=$1&searchindex=$2&searchparameterdata=$3

用于将我的链接翻译为:     www.my domain.com/albums/en/music/beatles /

但随后......一路走来,我再次难过了。在点击我的下一页时,它现在会附加到上面的网址,例如..

beatles/?language=en&locale=us&page=2&searchindex=music&searchparameter=keywords&searchparameterdata=beatles&

这是我可以在我的.htaccess中纠正的东西..保持我的工作网址的格式并仍然让分页工作?

2 个答案:

答案 0 :(得分:1)

我认为你让自己太难了;为什么不在单个参数中发送所有参数 并让php决定如何处理它?试试这个:

RewriteRule albums/(.*) albums.php?parameters=$1 [L]

然后在你的php中:

parse_str($_GET['parameters], $parameters);
do_stuff($parameters['searchindex'], $parameters['page'], ...);

美好而轻松:)

parse_str()查看do_stuff()手册{{1}},{{1}}显然是发明的;)

答案 1 :(得分:0)

您可以尝试将QSA标记添加到RewriteRule。

RewriteRule albums/(.*)/(.*)/(.*)/ albums.php?language=$1&searchindex=$2&searchparameterdata=$3 [QSA]

此外,您可能希望自行检查您的分页链接。我的猜测是查询字符串实际上是分页href的一部分。如果是这种情况,那么我想不出任何通过mod-rewrite删除查询字符串的简单方法。您需要修改分页链接,以便href仅包含所需的查询字符串参数。在这种情况下,您需要的唯一查询字符串参数是page=2部分。