mod_rewrite用于多个请求不起作用

时间:2011-10-14 08:39:51

标签: php .htaccess mod-rewrite url-rewriting

在我完全疯狂之前,也许有人可以帮助我。我有一个网站有两个网址,我想重定向。

我希望除了图库页面以外的所有流量都转到index.php。

这是我的htaccess:

php_flag magic_quotes_gpc Off

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteCond %{REQUEST_FILENAME} !-d [NC]


RewriteRule ^(.*)$ /index.php?/$1

RewriteRule ^gallery(/((([a-zA-Z0-9-]+)(/(\d+))?)/?)?)?$ gallery.php?groupId=$4&showpage=$6 [NC,QSA,L]

除了一部分之外,这是有效的。图库的重写规则并不完全正常。它通过groupId发送到gallery.php脚本,但我没有通过showpage参数。事实上,当showl包含在url中时,我得到404.例如。

这些工作由重写规则

正确处理
gallery

gallery/

gallery/mygroup

gallery/mygroup/

这不起作用并抛出404.

gallery/mygroup/2

我所做的一切似乎都没有解决这个问题,我将非常感谢你的帮助。如果我设置了showpage。如果我提供旧的

,则库脚本可以工作
gallery.php?groupId=mygroup&showpage=2

所以我确定htaccess规则没有抓住网址。

提前致谢。

1 个答案:

答案 0 :(得分:0)

你的正则表达式看起来有点过分了。改为使用两个更简单的重写规则:

RewriteRule ^gallery/([a-zA-Z0-9-]+)/?$ gallery.php?groupId=$1 [NC,QSA,L]
RewriteRule ^gallery/([a-zA-Z0-9-]+)/(\d+)/?$ gallery.php?groupId=$1&showpage=$2 [NC,QSA,L]