• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

基于设置的cookie重定向

.htaccess 来源:user1706680 6次浏览

我有双语网站。 用户应根据浏览器语言自动重定向至相应的子目录/en//de/。我通过.htaccess实现了这一点。基于设置的cookie重定向

如果用户希望切换语言,则该网站是一个语言切换器。当语言切换时,会有一个cookie集,其中包含值ende

现在我想我的htaccess检查是否有cookie集,如果是:检查值并重定向到适当的文件夹。如果没有:检查浏览器语言并重定向到适当的文件夹。

这是我迄今为止,但它给了我一个错误:重定向过多…

RewriteEngine on 

RewriteCond %{HTTP_COOKIE} Test=en; [NC] 
RewriteRule^http://example.com/en [L,R=301] 

RewriteCond %{HTTP_COOKIE} Test=de; [NC] 
RewriteRule^http://example.com/de [L,R=301] 

RewriteCond %{HTTP:Accept-Language} ^de [NC] 
RewriteRule ^$ http://example.com/de [L,R=301] 

RewriteRule ^$ http://example.com/en [L,R=301] 

这是生成的Cookie代码:

if (session_id() == '') { 
    session_start(); 
} 

$lang = basename ($_SERVER['REQUEST_URI']); 

setcookie("Test", $lang); 

===========解决方案如下:

你不限制当URL已被重定向一次时的重定向。这导致无限重定向循环。

RewriteCond %{REQUEST_URI} !^/(?:en|de) [NC] 
RewriteCond %{HTTP_COOKIE} test=(en|de) [NC] 
RewriteRule ^(.*)$ http://example.com/%1/$1 [R=301,L] 

RewriteCond %{HTTP:Accept-Language} ^de [NC] 
RewriteRule ^$ http://example.com/de [R=301,L] 

RewriteRule ^$ http://example.com/en [R=301,L] 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)