此路线不匹配:
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。
请问一个想法?
答案 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的代码库是否已被更改。)