2012-08-28 178 views
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 /剧情,剧本的作品。问题在于分页。如果我指向/movielist/Drama/1-20.html我得到404错误。任何想法为什么?

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

+0

根据我正在阅读的规则(我可能会误读它们),'/ movielist/drama'不应该工作,但'movielist/genere/drama'应该。你粘贴的是.htaccess中的内容吗? – temporalslide

+0

你没有与'movielist /'后面的'Drama'匹配的规则。您要么在第一条规则中使用数字值,要么在其他规则中使用'genre | year | starts'。 –

+0

对不起,我的坏....'/ movielist /流派/戏剧作品',而不是'/ movielist /戏剧',仍然问题1-20,这是分页 – Comforse

回答

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] 

除此之外,当我将这些规则放入一个香草apache安装的空白htaccess中时,我没有得到404。 /movielist/genre/Drama/1-12.html被重写为/modules.php?pg=1&ipp=20&module=movies&do=main&sort=genre&genre=Drama,但112从未得到使用。

+0

感谢您的好评!这使我发现了一些编码问题。我修正了它们,下面的代码现在可以工作:'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 = $ 3&ipp = $ 4&module = movies&do = main&sort = $ 1&$ ​​1 = $ 2 [L]' – Comforse