如何删除Symfony2根域路由的尾部斜杠

时间:2014-04-15 09:25:51

标签: symfony mod-rewrite

我发现了很多关于如何处理大量路线的信息,如:

http://app1.local/activity/

http://app1.local/reports/

来自Symfony2,但没有关于如何处理根目录的问题:

http://app1.local/

如果我@Route("", name="treasure_forge_home_overview")它有效,但仍会添加尾随" /"。

我明白有" /"可能是路由器工作的强制要求,但我也拒绝相信它对你们所有人都很好,并且没有解决方案。是否添加了默认的mod_rewrite规则?我对重写规则不太满意。

我更喜欢内部 Symfony2解决方案,而不是mod_rewite解决方案,但我必须采取任何方式。

非常感谢!

P.S。 Symfony 2.4.1

来自当前routing.yml的样本:

treasure_forge_core:
    resource: "@TreasureForgeCoreBundle/Controller"
    type: annotation
    prefix: /

在我的CoreController中:

/**
 * @Route("/", name="treasure_forge_home_overview")
 *
 * @return Response
 */
public function overviewAction(){}

/**
 * @Route("/activity", name="treasure_forge_home_activity")
 *
 * @return Response
 */
public function activityAction(){}

.htaccess的内容:

DirectoryIndex app.php

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
    RewriteRule ^(.*) - [E=BASE:%1]

    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]

    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule .? - [L]

    RewriteRule .? %{ENV:BASE}/app.php [L]
</IfModule>

<IfModule !mod_rewrite.c>
    <IfModule mod_alias.c>
        RedirectMatch 302 ^/$ /app.php/
    </IfModule>
</IfModule>

0 个答案:

没有答案