0

我在 .htaccess 中有以下几行:

RewriteRule ^/?movielist/([0-9]+)\-([0-9]+)\.html$ modules.php?module=movies&do=main&pg=$1&ipp=$2 [L]
RewriteRule ^/?movielist/(genre|year|stars)/([a-zA-Z0-0%20]+)$ modules.php?module=movies&do=main&sort=$1&$1=$2 [L]
RewriteRule ^/?movielist/(genre|year|stars)/([a-zA-Z0-0%20]+)/([0-9]+)\-([0-9]+)\.html$ modules.php?pg=1&ipp=20&module=movies&do=main&sort=$1&$1=$2 [L]

例如,如果我将 url 指向 /movielist/Drama,则脚本有效。问题在于分页。如果我指向 /movielist/Drama/1-20.html 我得到 404 错误。任何想法为什么?

如果我指向未重写的 URL,它就可以工作。

4

1 回答 1

0

你的规则有一些问题。最后一条规则的目标(与分页匹配的规则)不使用这些数字中的任何一个:

modules.php?pg=1&ipp=20&module=movies&do=main&sort=$1&$1=$2 [L]

所以从不使用$3$4反向引用,它应该是:

modules.php?pg=$3&ipp=$4&module=movies&do=main&sort=$1&$1=$2 [L]

除此之外,当我将这些规则放在 vanilla apache 安装中的空白 htaccess 中时,我没有得到 404。/movielist/genre/Drama/1-12.html被重写为/modules.php?pg=1&ipp=20&module=movies&do=main&sort=genre&genre=Drama,除了1and12永远不会被使用。

于 2012-08-29T00:16:00.417 回答