Laravel 4在网址中无限斜线,仍然有效

时间:2014-02-19 11:39:14

标签: .htaccess laravel-4 laravel-routing

我的问题是这两个网址的行为方式相同:

example.com/foo
example.com//////foo

他们都获取请求的页面“foo”并加载来自db的内容。 但我不喜欢这个。

所以这是我的htaccess:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

我的路线很简单:

Route::get('/', 'PageController@index');
Route::get('/{slug}', 'PageController@show')->where('slug', '[\-_A-Za-z0-9]+');

在哪里可以将第二个设置为404? .htacces 路由中的问题是什么?

1 个答案:

答案 0 :(得分:1)

似乎是Laravel中的问题,但您可以通过向.htaccess添加规则来重定向到您喜欢的任何地方。假设您有一条路线/errors/404

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/{2,} [NC]
RewriteRule ^ /errors/404 [L,R=301]

修改

刚刚在laravel / framework中发布了一个问题,看看核心对此的看法:https://github.com/laravel/framework/issues/3608