解决路由名称和文件夹名称之间的冲突

时间:2014-06-18 13:49:18

标签: php redirect laravel laravel-routing

我有一个问题(很明显),我正在使用Laravel 4.1并且我使用Laravel制作了我的网站的V2,V1是一个静态网站(没有php,只有很多html文件和文件夹)。

现在,我想进行301重定向,因为旧用户仍然在书签中使用旧网址,其他网站仍然使用旧网址引用我。 所以当人们通过这些旧网址时,我希望他们可以重定向到新的网址(没问题)?

事实上,当我尝试访问我的V2中的旧网址时,看起来像一个新的路由模式..好的,我会更准确地解释。所以想象我有www.example.com/en/restaurants/,这是我旧网站上餐馆文件夹的路径, 现在我有一条像这样的路线=>

Route::get('{$lang}/{$category}', PostController@getPosts)

我在浏览器中输入www.example.com/en/restaurants/ ..我的路线不起作用..它会显示文件夹内容..

我希望你明白我的意思!

谢谢大家。

1 个答案:

答案 0 :(得分:1)

它会在接触您的路线之前提供真实的文件和文件夹。如果您正在使用apache,.htacess将告诉它只重写非实际路径的路径,nginx也是如此。

有一些方法可以覆盖它,但这样做,因为它会严重影响资产的加载并产生许多令人讨厌的错误。

我建议的是,laravel公共目录中没有原始内容。最好的方法是编译所有URL的列表,并在路由文件底部捕获所有路由,检查它是否在列表中,并相应地重定向。这很麻烦,有点乏味,但老实说,这是最好的选择。也许是配置文件?

<?php
return [
    'oldurl'    => 'newurl/route'
];