Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 24
0.00% covered (danger)
0.00%
0 / 5
CRAP
0.00% covered (danger)
0.00%
0 / 1
RedirectController
0.00% covered (danger)
0.00%
0 / 24
0.00% covered (danger)
0.00%
0 / 5
156
0.00% covered (danger)
0.00%
0 / 1
 php
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
6
 phpPhp
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
6
 underscorePhpPhp
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
6
 underscoreIndex
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
6
 underscoreFolderIndex
0.00% covered (danger)
0.00%
0 / 8
0.00% covered (danger)
0.00%
0 / 1
20
1<?php
2
3namespace Olz\Controller;
4
5use Olz\Utils\HttpUtils;
6use Psr\Log\LoggerInterface;
7use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
8use Symfony\Component\HttpFoundation\RedirectResponse;
9use Symfony\Component\HttpFoundation\Request;
10use Symfony\Component\HttpFoundation\Response;
11use Symfony\Component\Routing\Annotation\Route;
12
13class RedirectController extends AbstractController {
14    #[Route('/_/{file}.php')]
15    public function php(Request $request, HttpUtils $http_utils, string $file): Response {
16        $query_string = $request->getQueryString();
17        $url = $query_string ? "/{$file}.php?{$query_string}" : "/{$file}.php";
18        $http_utils->redirect($url, 410);
19        return new RedirectResponse($url, 308);
20    }
21
22    #[Route('/{file}.php/index.php')]
23    public function phpPhp(Request $request, HttpUtils $http_utils, string $file): Response {
24        $query_string = $request->getQueryString();
25        $url = $query_string ? "/{$file}.php?{$query_string}" : "/{$file}.php";
26        $http_utils->redirect($url, 410);
27        return new RedirectResponse($url, 308);
28    }
29
30    #[Route('/_/{file}.php/index.php')]
31    public function underscorePhpPhp(Request $request, HttpUtils $http_utils, string $file): Response {
32        $query_string = $request->getQueryString();
33        $url = $query_string ? "/{$file}.php?{$query_string}" : "/{$file}.php";
34        $http_utils->redirect($url, 410);
35        return new RedirectResponse($url, 308);
36    }
37
38    #[Route('/_/')]
39    public function underscoreIndex(
40        Request $request,
41        HttpUtils $http_utils,
42        LoggerInterface $logger,
43    ): Response {
44        $query_string = $request->getQueryString();
45        $url = $query_string ? "/?{$query_string}" : '/';
46        $http_utils->redirect($url, 410);
47        return new RedirectResponse($url, 301, ['X-OLZ-Redirect' => 'underscore_index']);
48    }
49
50    #[Route('/_/{folder}/', requirements: ['folder' => '[^\.]+'])]
51    public function underscoreFolderIndex(
52        Request $request,
53        HttpUtils $http_utils,
54        LoggerInterface $logger,
55        string $folder,
56    ): Response {
57        $query_string = $request->getQueryString();
58        $html_exists = is_file("./_/{$folder}/index.html");
59        if ($html_exists) {
60            $url = $query_string ? "/{$folder}/index.html?{$query_string}" : "/{$folder}/index.html";
61            return new RedirectResponse($url, 301, ['X-OLZ-Redirect' => 'underscore_folder_index']);
62        }
63        $url = $query_string ? "/{$folder}/index.php?{$query_string}" : "/{$folder}/index.php";
64        $http_utils->redirect($url, 410);
65        return new RedirectResponse($url, 301, ['X-OLZ-Redirect' => 'underscore_folder_index']);
66    }
67}