尽管有URL,但是要清空$ _GET

时间:2011-04-01 13:23:31

标签: php

$_GET变量在网址www.abc.com/ec/basket.php?product_id=1上显示为空。

这是非常令人惊讶的,因为$_GET确实在同一服务器上具有相同URL的不同域上显示值。当然,代码是原始域的副本。

我感到困惑的是为什么会发生这种情况。即使代码的第一行显示空白$_GET

当我在页面的第一行做print_r($_SERVER)时,我收到以下回复。前两个值令人惊讶。

Array
(
    [REDIRECT_REDIRECT_REQUEST_METHOD] => GET
    [REDIRECT_REDIRECT_STATUS] => 404
    [REDIRECT_STATUS] => 404
    [HTTP_HOST] => www.abc.com
    [HTTP_CONNECTION] => keep-alive
    [HTTP_CACHE_CONTROL] => max-age=0
    [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.27 (KHTML, like Gecko) Chrome/12.0.712.0 Safari/534.27
    [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    [HTTP_ACCEPT_ENCODING] => gzip,deflate,sdch
    [HTTP_ACCEPT_LANGUAGE] => en-GB,en-US;q=0.8,en;q=0.6
    [HTTP_ACCEPT_CHARSET] => ISO-8859-1,utf-8;q=0.7,*;q=0.3
    [HTTP_COOKIE] => [various values]
    [PATH] => /sbin:/usr/sbin:/bin:/usr/bin
    [SERVER_SIGNATURE] => Apache/2.2.3 (Red Hat) Server at www.abc.com Port 80


    [SERVER_SOFTWARE] => Apache/2.2.3 (Red Hat)
    [SERVER_NAME] => www.abc.com
    [SERVER_ADDR] => [IP address]
    [SERVER_PORT] => 80
    [REMOTE_ADDR] => [IP address]
    [DOCUMENT_ROOT] => /var/www/htdocs
    [SERVER_ADMIN] => webmaster@abc.com
    [SCRIPT_FILENAME] => /var/www/htdocs/index.php
    [REMOTE_PORT] => 39746
    [REDIRECT_URL] => /page-not-found.html
    [GATEWAY_INTERFACE] => CGI/1.1
    [SERVER_PROTOCOL] => HTTP/1.1
    [REQUEST_METHOD] => GET
    [QUERY_STRING] => 
    [REQUEST_URI] => /ec/basket.html?product_id=1
    [SCRIPT_NAME] => /index.php
    [PHP_SELF] => /index.php
    [PHP_AUTH_USER] => 
    [PHP_AUTH_PW] => 
    [REQUEST_TIME] => 1301662577
)

此状态的HTTP状态显示404,但页面正常显示。只是我无法在$_GET变量中获得任何值。

同样,$_GET变量在同一网站的其他页面上运行得非常好。

我几个小时以来一直在摸不着头脑,却无法找到解决方案。任何帮助将受到高度赞赏。

4 个答案:

答案 0 :(得分:1)

您应该查看.htaccess文件,更准确地看一下包含RewriteRule的行。

答案 1 :(得分:1)

您的重写规则可能缺少查询字符串追加标记。

找到如下所示的行:

RewriteRule somestuff index.php [L]

将其替换为:

RewriteRule somestuff index.php [L,QSA]

答案 2 :(得分:0)

将它放在.htaccess文件中。这将有用。

Options +FollowSymLinks

RewriteEngine on
RewriteCond %{QUERY_STRING}                     ^(.*)$
RewriteRule ^/ec/basket.html?$                  index.php%1

答案 3 :(得分:0)

RewriteRule (.*)\.html$ index.php?%{QUERY_STRING} 

您的脚本或apache在没有传递 GET 变量(查询字符串)的情况下进行重定向。