Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ie和firefox在使用重写apache时无法读取cookie值_Php_.htaccess_Internet Explorer_Firefox_Rewrite - Fatal编程技术网

Php ie和firefox在使用重写apache时无法读取cookie值

Php ie和firefox在使用重写apache时无法读取cookie值,php,.htaccess,internet-explorer,firefox,rewrite,Php,.htaccess,Internet Explorer,Firefox,Rewrite,我在使用IE和firefox时遇到了一个奇怪的问题,但是chrome和safari的效果很好。当我尝试使用多语言站点时,我能够正确地将root上的页面重定向到所涉及的语言路径,基本上我有如下php代码 RewriteEngine on # do not use htaccess any of rule when php post RewriteCond %{REQUEST_METHOD} =POST RewriteRule ^ - [L] # Redirect external .php r

我在使用IE和firefox时遇到了一个奇怪的问题,但是chrome和safari的效果很好。当我尝试使用多语言站点时,我能够正确地将root上的页面重定向到所涉及的语言路径,基本上我有如下php代码

RewriteEngine on

# do not use htaccess any of rule when php post
RewriteCond %{REQUEST_METHOD} =POST
RewriteRule ^ - [L]

# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ /$1 [R=301,L]

# add extension if the php file exists:
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule (.*) $1.php [L]

# if cookie set turn /file to /en|tr/file
RewriteCond %{QUERY_STRING} !^lang= [NC]
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{HTTP_COOKIE} lang=(en|tr) [NC]
RewriteRule ^((?!(tr|en)).*)$ /%1/$1 [L,R=301]

# if cookie not set then /  to  /en/file
RewriteCond %{QUERY_STRING} !^lang=
RewriteCond %{HTTP_COOKIE} !lang=
RewriteRule ^((?!(tr|en)).*)$ /en/$1? [L,R=301]

# if cookie set then goto there root folder
RewriteCond %{QUERY_STRING} !^lang= [NC]
RewriteCond %{HTTP_COOKIE} lang=(en|tr)? [NC]
RewriteRule ^(?!(tr|en))$ /%1/$1 [L,R=301]

# get meanful /en|tr/file to /en|tr/file?lang=en|tr
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(tr|en)/(.*)$ /$2?lang=$1 [L]
common.php

<?php

session_start();
header('Cache-control: private'); // IE 6 FIX

if(isSet($_GET['lang'])) 
{
    $lang = $_GET['lang'];
    $_SESSION['lang'] = $lang;
    setcookie('lang', $lang, time() + (3600 * 24 * 30),'/');
}

else if(isSet($_SESSION['lang'])) 
{
    $lang = $_SESSION['lang'];
} 

else if(isSet($_COOKIE['lang'])) 
{
    $lang = $_COOKIE['lang'];
} 

else 
{
    $lang = 'en';
    $_SESSION['lang'] = $lang;
    setcookie('lang', $lang, time() + (3600 * 24 * 30),'/');
}


    switch ($lang) 
   {
        case 'en':
        $lang_file = 'lang.en.php';
        break;

        case 'tr':
        $lang_file = 'lang.tr.php';
        break;
    }

include_once($_SERVER['DOCUMENT_ROOT'] . '/lang/'.$lang_file);
?>
一旦我尝试请求
/
,它应该读取cookie值,然后根据cookie值转到
/en/
/tr/
,但是在ie和firefox上它不起作用


任何帮助都将不胜感激

一旦删除重定向类型301,代码就适用于所有浏览器。不过,我不确定这一举措对SEO有何影响

RewriteEngine on

# do not use htaccess any of rule when php post
RewriteCond %{REQUEST_METHOD} =POST
RewriteRule ^ - [L]

# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ /$1 [R=301,L]

# add extension if the php file exists:
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule (.*) $1.php [L]

# if cookie set turn /file to /en|tr/file
RewriteCond %{QUERY_STRING} !^lang= [NC]
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{HTTP_COOKIE} lang=(en|tr) [NC]
RewriteRule ^((?!(tr|en)).*)$ /%1/$1 [L,R]

# if cookie not set then /  to  /en/file
RewriteCond %{QUERY_STRING} !^lang=
RewriteCond %{HTTP_COOKIE} !lang=
RewriteRule ^((?!(tr|en)).*)$ /en/$1? [L,R]

# if cookie set then goto there root folder
RewriteCond %{QUERY_STRING} !^lang= [NC]
RewriteCond %{HTTP_COOKIE} lang=(en|tr)? [NC]
RewriteRule ^(?!(tr|en))$ /%1/$1 [L,R]

# get meanful /en|tr/file to /en|tr/file?lang=en|tr
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(tr|en)/(.*)$ /$2?lang=$1 [L]

删除重定向类型301后,该代码适用于所有浏览器。不过,我不确定这一举措对SEO有何影响

RewriteEngine on

# do not use htaccess any of rule when php post
RewriteCond %{REQUEST_METHOD} =POST
RewriteRule ^ - [L]

# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ /$1 [R=301,L]

# add extension if the php file exists:
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule (.*) $1.php [L]

# if cookie set turn /file to /en|tr/file
RewriteCond %{QUERY_STRING} !^lang= [NC]
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{HTTP_COOKIE} lang=(en|tr) [NC]
RewriteRule ^((?!(tr|en)).*)$ /%1/$1 [L,R]

# if cookie not set then /  to  /en/file
RewriteCond %{QUERY_STRING} !^lang=
RewriteCond %{HTTP_COOKIE} !lang=
RewriteRule ^((?!(tr|en)).*)$ /en/$1? [L,R]

# if cookie set then goto there root folder
RewriteCond %{QUERY_STRING} !^lang= [NC]
RewriteCond %{HTTP_COOKIE} lang=(en|tr)? [NC]
RewriteRule ^(?!(tr|en))$ /%1/$1 [L,R]

# get meanful /en|tr/file to /en|tr/file?lang=en|tr
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(tr|en)/(.*)$ /$2?lang=$1 [L]

您没有缩进您的代码吗?没有涉及到特定的代码,因为它们是常规的php文件,用于web页面,包括common.php。这个问题应该与.htaccess或ie/firefox有关。您是否尝试过从301永久重定向中清除浏览器缓存,并改用302重定向?@linuxman我说的是PHP代码。我发现读不缩进的代码非常困难。我试图清除浏览器缓存和cookies。302类型的重定向对于seo友好型网站来说不是一个好的解决方案,但不,我没有尝试。你没有缩进你的代码吗?没有涉及到任何特定的代码,因为它们是常规的php文件,用于web页面包括common.php。这个问题应该与.htaccess或ie/firefox有关。您是否尝试过从301永久重定向中清除浏览器缓存,并改用302重定向?@linuxman我说的是PHP代码。我发现读不缩进的代码非常困难。我试图清除浏览器缓存和cookies。302类型的重定向对于seo友好的网站来说不是一个好的解决方案,但我没有尝试。不要在翻译页面上做301重定向。在翻译页面上使用“不执行301重定向”。使用307