@@ -37,13 +37,38 @@ system, as explained below:
37
37
38
38
.. configuration-block ::
39
39
40
+ .. code-block :: php-annotations
41
+
42
+ // src/AppBundle/Controller/RedirectingController.php
43
+ namespace AppBundle\Controller;
44
+
45
+ use Symfony\Bundle\FrameworkBundle\Controller\Controller;
46
+ use Symfony\Component\HttpFoundation\Request;
47
+
48
+ class RedirectingController extends Controller
49
+ {
50
+ /**
51
+ * @Route("/{url}", name="remove_trailing_slash",
52
+ * requirements={"url" = ".*\/$"}, methods={"GET"})
53
+ */
54
+ public function removeTrailingSlashAction(Request $request)
55
+ {
56
+ $pathInfo = $request->getPathInfo();
57
+ $requestUri = $request->getRequestUri();
58
+
59
+ $url = str_replace($pathInfo, rtrim($pathInfo, ' /'), $requestUri);
60
+
61
+ return $this->redirect($url, 301);
62
+ }
63
+ }
64
+
40
65
.. code-block :: yaml
41
66
42
67
remove_trailing_slash :
43
68
path : /{url}
44
69
defaults : { _controller: AppBundle:Redirecting:removeTrailingSlash }
45
70
requirements :
46
- url : .*/$
71
+ url : .*\ /$
47
72
methods : [GET]
48
73
49
74
.. code-block :: xml
@@ -52,7 +77,7 @@ system, as explained below:
52
77
<routes xmlns =" http://symfony.com/schema/routing" >
53
78
<route id =" remove_trailing_slash" path =" /{url}" methods =" GET" >
54
79
<default key =" _controller" >AppBundle:Redirecting:removeTrailingSlash</default >
55
- <requirement key =" url" >.*/$</requirement >
80
+ <requirement key =" url" >.*\ /$</requirement >
56
81
</route >
57
82
</routes >
58
83
@@ -70,7 +95,7 @@ system, as explained below:
70
95
'_controller' => 'AppBundle:Redirecting:removeTrailingSlash',
71
96
),
72
97
array(
73
- 'url' => '.*/$',
98
+ 'url' => '.*\ /$',
74
99
),
75
100
array(),
76
101
'',
0 commit comments