@@ -145,15 +145,15 @@ protected static function routeFile($templateRoot,$root,$dir,$path,$parameters,$
145145
146146 if (substr ($ url ,-7 )=='//index ' ) $ redirect = substr ($ url ,0 ,-7 );
147147 if (substr (static ::$ original ,-6 )=='/index ' ) $ redirect = substr ($ url ,0 ,-6 );
148- if (count ($ parameters )>count ($ parameterNames )) {
148+ if (count ($ parameters )>count ($ parameterNames ) || count ( array_diff ( array_keys ( $ getParameters ), $ parameterNames ))> 0 ) {
149149 if (substr ($ url ,-6 )=='/index ' ) $ url = substr ($ url ,0 ,-6 );
150150 if ($ url =='index ' ) $ url = '' ;
151- if (count ($ parameterNames )) {
152- $ redirect = ($ url ?$ url .'/ ' :'' );
153- $ redirect .= implode ('/ ' ,array_slice ($ parameters , 0 , count ($ parameterNames )));
154- } else {
155- $ redirect = $ url ;
151+ $ redirect = $ url ;
152+ for ($ i =0 ;$ i <min (count ($ parameters ),count ($ parameterNames ));$ i ++) {
153+ $ redirect .= '/ ' .$ parameters [$ i ];
156154 }
155+ $ query = http_build_query (array_intersect_key ($ getParameters ,array_flip ($ parameterNames )));
156+ $ redirect .= $ query ?'? ' .$ query :'' ;
157157 }
158158 $ parameters = array_map ('urldecode ' , $ parameters );
159159 if (count ($ parameters )<count ($ parameterNames )) {
@@ -244,11 +244,6 @@ protected static function route()
244244 parse_str ($ query ,$ getParameters );
245245 }
246246
247- if (!static ::$ allowGet ) {
248- $ _SERVER ['REQUEST_URI ' ] = static ::$ baseUrl .$ request ;
249- $ _GET = array ();
250- }
251-
252247 $ parts = explode ('/ ' ,$ request );
253248 for ($ i =count ($ parts );$ i >=0 ;$ i --) {
254249 if ($ i ==0 ) $ dir = '' ;
@@ -268,7 +263,7 @@ protected static function route()
268263 $ templateFile = static ::$ template ;
269264 $ parameters = array ();
270265 $ parameters ['url ' ] = static ::$ parameters ;
271- $ parameters ['get ' ] = $ getParameters ;
266+ $ parameters ['get ' ] = $ _GET ;
272267 $ parameters ['post ' ] = $ _POST ;
273268 Debugger::set ('router ' ,compact ('method ' ,'csrfOk ' ,'request ' ,'url ' ,'dir ' ,'view ' ,'template ' ,'viewFile ' ,'actionFile ' ,'templateFile ' ,'parameters ' ));
274269 Debugger::set ('status ' ,$ status );
0 commit comments