Laravel 4:路线与尾随斜线不匹配,如何制作?

时间:2013-07-28 00:23:49

标签: php laravel laravel-4 routes

此路线不匹配:

 Route::get('/{cat}/',
    array('as' => 'article_cat', 'uses' => 'ArticleController@cat'))
    ->where('cat', $pattern_str);

没有尾随斜线的路线匹配。 这不是Apache的错误原因,我使用尾部斜杠URL测试并替换public / index.php的内容。可以使用domain.com/the-cat/显示index.php内容。 但不适用于Laravel4。

我发现了很多关于此问题的消息和问题但没有解决方案。 我的客户使用此类URL,并且不希望更改其站点的新版本(正常)中的URL。

请问一个想法?

1 个答案:

答案 0 :(得分:0)

Silex Micro-Framework在这方面做得更好 - 它会强制你想要的那个(用于SEF目的)。

对Laravel来说,最好的办法是声明你的路线没有的斜杠,并强制Apache在任何传入的URL上添加斜杠。

因此,路线定义如下所示:

Route::get('my/page' ...);

您的超文本访问(.htaccess)RewriteRule将如下所示:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)([^/])$ http://%{HTTP_HOST}/$1$2/[L,R=301 ]

该代码块应该先于其他任何代码块 - 它甚至应该是第一个被执行的规则。

因此,当您访问my/page时,系统会将您重定向到my/page/,但会加载GET my/page路由。

(注意:这适用于我的项目 - 我不知道Laravel的代码库是否已被更改。)