acme_admin_dashboard:
pattern: /{_locale}/admin
defaults: { _controller: AcmeBundle:Admin:dashboard }
Run Code Online (Sandbox Code Playgroud)
我希望这条路线可以在/en/admin和/en/admin/.我怎么做到这一点?
wal*_*rra 36
我喜欢@ Kuchengeschmack的回答(/sf/answers/775484391/),因为它不会触发外部重定向.
这是一个yaml版本:
acme_admin_dashboard:
pattern: /{_locale}/admin{trailingSlash}
defaults: { _controller: AcmeBundle:Admin:dashboard, trailingSlash : "/" }
requirements: { trailingSlash : "[/]{0,1}" }
Run Code Online (Sandbox Code Playgroud)
小智 20
只需输入:
/**
* @Route("/route/of/some/page/")
*/
Run Code Online (Sandbox Code Playgroud)
所以
www.example.com/route/of/some/page
Run Code Online (Sandbox Code Playgroud)
和
www.example.com/route/of/some/page/
Run Code Online (Sandbox Code Playgroud)
被接受了......
小智 12
我找到了一个向路径添加尾部斜杠的解决方案.
意味着这两个环节正在 www.example.com/route/of/some/page和www.example.com/route/of/some/page/.你可以这样做:
如果你的路线看起来像
/**
* @Route("/route/of/some/page")
*/
public function pageAction() {
Run Code Online (Sandbox Code Playgroud)
改变是
/**
* @Route("/route/of/some/page{trailingSlash}", requirements={"trailingSlash" = "[/]{0,1}"}, defaults={"trailingSlash" = "/"})
*/
public function pageAction() {
Run Code Online (Sandbox Code Playgroud)
Mar*_*rek 10
您也可以在.htaccess文件中使用重写规则:
假设您已经定义了这样的路线:
news:
url: /news
param: { module: news, action: index }
Run Code Online (Sandbox Code Playgroud)
这将匹配http://something.something/news,但不是http://something.something/news/ 您可以添加带有斜杠的附加路径,但您也可以简单地使用此重写规则.htaccess文件:
RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
http://symfony-blog.driebit.nl/2010/07/url-routes-with-or-without-a-trailing-slash/
我将以下行破解成前控制器(app.php/app_dev.php)
$_SERVER['REQUEST_URI'] = preg_replace('|/$|', '', $_SERVER['REQUEST_URI'], 1);
Run Code Online (Sandbox Code Playgroud)
之前 $request = Request::createFromGlobals()
路线:
remove_trailing_slash:
path: /{url}
defaults: { _controller: AppBundle:Redirecting:removeTrailingSlash }
requirements:
url: .*/$
methods: [GET]
Run Code Online (Sandbox Code Playgroud)
控制器:
// src/AppBundle/Controller/RedirectingController.php
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
class RedirectingController extends Controller
{
public function removeTrailingSlashAction(Request $request)
{
$pathInfo = $request->getPathInfo();
$requestUri = $request->getRequestUri();
$url = str_replace($pathInfo, rtrim($pathInfo, ' /'), $requestUri);
return $this->redirect($url, 301);
}
}
Run Code Online (Sandbox Code Playgroud)
阅读更多:http://symfony.com/doc/current/routing/redirect_trailing_slash.html
| 归档时间: |
|
| 查看次数: |
21677 次 |
| 最近记录: |