虽然需要使用两个不同的cookie名称,一个用于EN数据,另一个用于DE数据,但这是可能的。
使用不同的路径(www.webshop.com用于EN,www.webshop.com/de/用于DE):
// this will be available everywhere, both on the english version and the german one
setcookie ('my_en_cookie_name', 'some data', time() + 24*30*3600, '/');
// this will only be visible when accessing the german website, english version user won't be able to see it
setcookie ('my_de_cookie_name', 'some other data', time() + 24*30*3600, '/de/');
Cookie的路径是向后阻塞的(只能从指定目录或其子目录中读取,而不能从父级目录中读取),因此,如果您使用“/de/”路径设置了Cookie,则可以从“/de/”或“/de/foo/”读取,但无法从“/”或“/bar/”读取。同样,如果您使用“/”路径设置Cookie,则可以在“/de/”、“/de/foo/”或“/bar/”上读取。
使用不同的域名(www.webshop.com用于英文,de.webshop.com用于德文):
// this will be available everywhere, both on the english version and the german one
setcookie ('my_en_cookie_name', 'some data', time() + 24*30*3600, '/', '.webshop.com');
// this will only be visible when accessing the german website, english version user won't be able to see it
setcookie ('my_de_cookie_name', 'some data', time() + 24*30*3600, '/', 'de.webshop.com');
注意:在域名“.webshop.com”上设置cookie意味着该cookie将被发送到webshop.com的每个子域,无论它是什么。确保这就是您想要的。
/de/
不是一个有效的域名。为什么不在cookie或者后端服务器中存储语言标识呢? - Kerrek SB/en/
下,另一个放在/de/
下并同时运行它们,而不是将一个嵌套在另一个下面吗? - Kerrek SB