$_GET 始终为空

问题描述 投票:0回答:3

我的 laravel 应用程序在本地主机上运行良好,但现在将我的应用程序移动到生产服务器,它不再识别通过 URL 传递的任何 $_GET 变量。我的生产服务器设置为允许多个 Laravel 安装,并且我正在使用位于 Laravel 根目录中的 vhost.conf 文件和 .htaccess 文件来处理重写。

.htaccess

<IfModule mod_rewrite.c>
     RewriteEngine On
     RewriteBase /
     RewriteCond %{REQUEST_FILENAME} !-f
     RewriteCond %{REQUEST_FILENAME} !-d
     RewriteRule ^(.*)$ /international-experts/index.php/?$1 [L]
</IfModule>

vhost.conf

Alias /international-experts "/srv/http/international-experts/public"
<Directory /srv/http/international-experts>
  Options Indexes Includes FollowSymLinks MultiViews
  AllowOverride AuthConfig FileInfo Indexes
  Order allow,deny
  Allow from all
</Directory>

我所做的测试是在多个页面上使用 print_r($_GET) 。没有什么。仔细阅读这个问题,听起来多视图可能是问题的一部分。我知道我不是唯一一个在同一服务器上处理多个 Laravel 安装的人...还有其他人必须解决这个问题吗?

谢谢

php apache .htaccess laravel mod-rewrite
3个回答
3
投票

在重写规则中

RewriteRule ^(.*)$ /international-experts/index.php/?$1 [L]

您使用 ?$1 创建一个新的

查询字符串,在这种情况下的默认行为是丢弃旧的查询字符串。您需要使用标志 
QSA
,您可以将其记住为“查询字符串附加”

RewriteRule ^(.*)$ /international-experts/index.php/?$1 [L,QSA]

如果还不足以解决您的问题,它肯定是问题的一部分。


1
投票
我遇到了类似的问题

$_GET[]

空。主要是因为某个地方的服务器问题,我必须使用 
$GET
 生成自己的 
$_SERVER['HTTP_REFERER']

//url='http://example.com/?search=john&location=london'; $get=array(); $query=mb_split("&",parse_url($_SERVER['HTTP_REFERER'],PHP_URL_QUERY)); if(!empty($query)) foreach ($query as $qr){ $vars=mb_split('=',$qr); $get[$vars[0]]=$vars[1]; } var_dump($get['search']);
    

0
投票
就我而言,这是 CDN 问题

我的 CDN 服务具有针对带有或不带有查询字符串的 URL 的缓存功能,因此我禁用了 CDN 服务中的缓存功能,然后一切正常。

© www.soinside.com 2019 - 2024. All rights reserved.