Perhaps someone can help me with this before I go completely crazy with it. I have a site with two urls which I want to redirect.
I want all traffic except the gallery pages to go to index.php.
This is my 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]
This works except for one part. The rewrite rule for the gallery is not fully working. It is sending through the groupId开发者_运维百科 to the gallery.php script but I am not getting through the showpage argument. In fact when the showpage is included in the url I get a 404. So for instance.
These work and are handled correctly by the rewrite rule
gallery
gallery/
gallery/mygroup
gallery/mygroup/
This does not work and throws 404's.
gallery/mygroup/2
Nothing I do seems to fix this and I would appreciate your help on this. If I set the showpage. The gallery script works if I feed it the old
gallery.php?groupId=mygroup&showpage=2
so I am sure the htaccess rule is not catching the url.
Thanks in advance.
Your regex seems a little over-the-top. Use two simpler rewrite rules instead:
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]
精彩评论