【问题标题】:Laravel routes ending with '.php' not working以“.php”结尾的 Laravel 路由不起作用
【发布时间】:2016-07-27 17:14:52
【问题描述】:

使用 Laravel,我想创建一个路由来替换曾经是 PHP 文件的旧 URL 的功能,但是每当我创建一个以 .php 结尾的路由时,它就无法识别该路由并且我得到一个 404 .

Route::get('test.php', function(){return "test";}); // Gets a 404 error.

但是其他带有扩展的路由似乎可以工作。

Route::get('test.txt', function(){return "test";}); // works fine

【问题讨论】:

    标签: php laravel laravel-5 routing url-routing


    【解决方案1】:

    在 laravel 中,您的路由不需要 .php 扩展名。

    查看documentation

    此外,当您返回视图时,您不需要 .php 扩展名。

    【讨论】:

    • 我知道。我想用 laravel 中的路由替换已经存在的 URL。由于旧版支持,我无法更改 URL,它以 .php 结尾。
    【解决方案2】:

    请参阅mod_rewrite 作为 apache mod_rewrite 处理此问题的一部分,而不仅仅是 laravel 框架。查看 public/.htaccess 文件。

    我认为没有任何理由这样做。但正如你想知道的,我正在告诉你。我不推荐这样做,因为它避免了框架的某些目的。

    首先你需要做的是编辑你的 .htaccess 文件重写规则来启用 php 扩展。我不能说太多,因为我在这里看不到这些文件。

    第二件事是默认情况下所有请求都将重定向到 index.php 。查看我的 laravel 项目 public/ 文件夹 .htaccess 文件之一。 您需要查看并修改它,有很多方法可以根据您的需要进行修改。可能还有其他 .htaccess 文件

    扩展更改部分看这里

    RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)/$ /$1 [L,R=301]

    RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L]更改 index.php 的部分

    我的 .htaccess 文件,因为它没有被修改

    <IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>
    
    RewriteEngine On
    
    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]
    
    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
    
    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-31
      • 2016-11-05
      • 2015-01-26
      • 2015-03-13
      • 2017-10-31
      • 2019-11-03
      相关资源
      最近更新 更多