$ _GET始终为空

时间:2015-07-20 16:02:14

标签: php apache .htaccess laravel mod-rewrite

我的laravel应用程序在localhost上运行良好,但现在已将我的应用程序移动到生产服务器,它不再识别通过URL传递的任何$ _GET变量。我的生产服务器设置为允许多个laravel安装,我使用vhost.conf文件和位于laravel根目录的.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)。没有。阅读问题,听起来像MultiViews可能是问题的一部分。我知道我并不是唯一一个在同一台服务器上处理多个laravel安装的人...还有其他人必须解决这个问题吗?

由于

2 个答案:

答案 0 :(得分:2)

在重写规则

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

使用?$1创建一个新的查询字符串,在这种情况下,默认行为是丢弃旧的查询字符串。您需要使用标记QSA,您可以将其记为“查询字符串追加”

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

如果不足以解决您的问题,那肯定是其中的一部分。

答案 1 :(得分:0)

我遇到了$_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']);