php - 带有参数的 Laravel-4 路由被调用两次

标签 php laravel-4

我注意到我正在使用 laravel 开发的应用程序的激活路由发生了奇怪的行为,并且在通过 xdebug 等进行了数小时的调试后,我发现我的路由实际上有时被调用了两次。为了重现这种情况,我使用默认文件创建了一个全新的 Laravel 项目,并添加了一个简单的路由作为执行以下操作的测试:

Route::get('/activate/{code}', function($code)
{
   file_put_contents('/home/fa/testproj/route_called.txt', $code . "\n",   FILE_APPEND);
});

基本上,这个简单的路由所做的就是获取 URI 上传递的路由参数并将其记录到一个文件中。奇怪的是,我注意到对于我在 URI 上键入的代码参数(例如 http://myserver/activate/123456789),路由被调用了两次,但对于重复的代码只调用了一次(可能是由于一些 session 缓存?)。多次尝试的'route_called.txt'文件内容如下:

123456789
123456789
123838384242
123838384242
123838384242        <---- notice that it's called only once for repeated parameter
1238383842424657347
1238383842424657347
332211576347
332211576347
332211576347    <---- notice that it's called only once for repeated parameter
1238376540897326
1238376540897326

laravel 文件是最新的,除了上面的四行路由代码外,我没有做任何更改。我在公用文件夹中有 laravel 提供的标准文件:

-rw-rw-r-- 1 fa fa    0 Apr 15 16:06 favicon.ico
-rw-rw-r-- 1 fa fa  356 Apr 15 16:06 .htaccess
-rw-rw-r-- 1 fa fa 1586 Apr 15 16:06 index.php
drwxrwxr-x 2 fa fa 4096 Apr 15 16:06 packages/
-rw-rw-r-- 1 fa fa   24 Apr 15 16:06 robots.txt

laravel 提供的 .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>

我的服务器是 Ubuntu 12.04LTS,运行 Apache 2.2.22 以及 laravel 所需的所有标准 php 模块。

有些人在别处说这可能是由于缺少 favicon.ico 问题,但 laravel 已经解决了这个问题,已经为我们提供了上面的 favicon.ico 文件。

非常感谢任何帮助。非常感谢!

最佳答案

没关系,我设法找到了为什么会出现这种奇怪行为的答案。这与 Laravel 完全无关。似乎是 ISP 级别的互联网过滤设备将重复的 HTTP 请求发送到我的服务器。我猜设备会发送模仿我们浏览页面请求的重复请求,以检查我们访问的网站是否符合过滤策略......不得不重新设计我的应用程序的一些逻辑以适应这种情况。

关于php - 带有参数的 Laravel-4 路由被调用两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23422703/

相关文章:

php - 从同一行的不同表中选择 SUM 和 COUNT,PHP 和 MySql

php - 拉维 PHP : Container not floating left

mysql - 如何将同一个表中的多行合并为 1 行,在 sql 连接中使用 laravel 查询生成器的不同列

laravel - 填充选择元素

php - 使用 laravel 5 将大型结果集存储在缓存/redis 中

php - MySQL WHERE 查询不起作用

php - MessageMedia Webhooks PHP SDK 错误

php - 将 Oauth 2.0 访问 token 传递给 PHP 中的 Fusion Tables API 时出现无效凭据错误

php - Laravel 4继承的属性为null

laravel-4 - Laravel 将所有请求重定向到 HTTPS