}
$parts = explode( '/', $subPage, 2 );
- if ( $parts !== 2 ) {
- $slot = $parts[0];
- if ( $slot === 'main' || $slot === '' ) {
- return true;
- }
- }
-
- return false;
+ $slot = $parts[0];
+ $title = $parts[1] ?? '';
+ return ( $slot === 'main' || $slot === '' ) && $title !== '';
}
/**
* Main method for handling requests.
*
- * @param string $subPage
+ * @param string|null $subPage
* @param WebRequest $request The request parameters. Known parameters are:
* - title: the page title
* - format: the format
$revision = 0;
- $parts = explode( '/', $subPage, 2 );
if ( $subPage !== '' ) {
- $title = $parts[1];
+ $parts = explode( '/', $subPage, 2 );
+ $title = $parts[1] ?? '';
} else {
$title = $request->getText( 'target' );
}
'',
[ 'target' => 'Helsinki' ],
[ 'Accept' => 'text/HTML' ],
- '!!',
+ '!^$!',
303,
[ 'Location' => '!Helsinki$!' ]
];
'revision' => '4242',
],
[ 'Accept' => 'text/HTML' ],
- '!!',
+ '!^$!',
303,
[ 'Location' => '!Helsinki(\?|&)oldid=4242!' ]
];
'/Helsinki',
[],
[],
- '!!',
+ '!^$!',
303,
[ 'Location' => '!Helsinki&action=raw!' ]
];
];
$cases[] = [
- 'main/Helsinki',
+ 'no slash',
+ [],
+ [ 'Accept' => 'text/HTML' ],
+ '!!',
+ 400,
+ []
+ ];
+
+ $cases[] = [
+ 'main',
+ [],
+ [ 'Accept' => 'text/HTML' ],
+ '!!',
+ 400,
+ []
+ ];
+
+ $cases[] = [
+ 'xyz/Helsinki',
[],
[ 'Accept' => 'text/HTML' ],
'!!',
+ 400,
+ []
+ ];
+
+ $cases[] = [
+ 'main/Helsinki',
+ [],
+ [ 'Accept' => 'text/HTML' ],
+ '!^$!',
303,
[ 'Location' => '!Helsinki$!' ]
];
'/Helsinki',
[],
[ 'Accept' => 'text/HTML' ],
- '!!',
+ '!^$!',
303,
[ 'Location' => '!Helsinki$!' ]
];
'main/AC/DC',
[],
[ 'Accept' => 'text/HTML' ],
- '!!',
+ '!^$!',
303,
[ 'Location' => '!AC/DC$!' ]
];