Laravel不区分大小写的路线

时间:2014-02-12 14:45:22

标签: regex laravel laravel-4 case-insensitive laravel-routing

如何定义不区分大小写(路径的一部分)?

示例:

在路线的固定部分使用大写字母不起作用:

我理解如何使用{参数}等参数使用 - > with()使用正则表达式模式,但这对路径的固定部分没有帮助,如上所述。

3 个答案:

答案 0 :(得分:5)

这可以通过以下方式定义路线来解决:

Route::get('/{userId}/{profile}')->with('profile', '(?i)profile(?-i)');

更聪明,将其定义为pattern,然后它也可以在路线组中使用。

Route::pattern('profile', '(?i)profile(?-i)');
Route::get('/{userId}/{profile}');

答案 1 :(得分:0)

添加模式一次仅适用于一条路由,如果您希望所有路由不区分大小写,请将其添加到之前部分的/app/filter.php文件中:

我写了一个要点:https://gist.github.com/samthomson/f670f9735d200773e543

编辑你的app / filters.php以检查路线中的大写字符并将它们重定向到转换后的路线。

答案 2 :(得分:0)

对于那些使用Apache的人,你也可以这样做:

此处 vhost文件的顶部添加

RewriteEngine On
RewriteMap lowercase int:tolower 

并在您的 .htaccess

RewriteCond $1 [A-Z]
RewriteRule ^(.*)$ /${lowercase:$1} [R=301,L]