我的 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 安装的人...还有其他人必须解决这个问题吗?
在重写规则中
RewriteRule ^(.*)$ /international-experts/index.php/?$1 [L]
您使用?$1
创建一个新的
查询字符串,在这种情况下的默认行为是丢弃旧的查询字符串。您需要使用标志
QSA
,您可以将其记住为“查询字符串附加”
RewriteRule ^(.*)$ /international-experts/index.php/?$1 [L,QSA]
如果还不足以解决您的问题,它肯定是问题的一部分。
$_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']);