【发布时间】:2012-11-08 11:53:49
【问题描述】:
因为我是 .htaccess 的新手,所以我不知道如何进行这项工作: 在我的网络服务器上,默认的 index.html (/var/www/) 应该根据一天中的时间和浏览器语言重定向到其他不同的 index.html...
- /index.html(默认,德语,夜间黑色背景)
- /i/index.html(德语,当天为白色背景)
- /e/index.html(英文,夜间黑色背景)
- /e/i/index.html(英文,当天为白色背景)
所有页面都相互链接,以便用户可以在语言和“风格”之间跳转。 仅使用它适用于德语的时间条件,但我如何将它与“英语”结合起来? 这个我试过了,还是不行……
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{TIME_HOUR} >07
RewriteCond %{TIME_HOUR} <16
RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^index\.html$ /e/i/index.html [L]
RewriteCond %{TIME_HOUR} >07
RewriteCond %{TIME_HOUR} <16
RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^index\.html$ /i/index.html [L]
RewriteCond %{TIME_HOUR} >16
RewriteCond %{TIME_HOUR} <07
RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^index\.html$ /e/index.html [L]
RewriteCond %{TIME_HOUR} >16
RewriteCond %{TIME_HOUR} <07
RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^index\.html$ /index.html [L]
有人可以帮忙吗? 非常感谢!
我不得不改变网站的结构,所以我也改变了.htaccess文件:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:Accept-Language} (de) [NC]
RewriteCond %{TIME_HOUR} >07
RewriteCond %{TIME_HOUR} <16
RewriteRule ^index\.html$ /d/i/index.html [L]
RewriteRule ^index\.html$ /d/index.html [L]
RewriteCond %{HTTP:Accept-Language} (en) [NC]
RewriteCond %{TIME_HOUR} >16
RewriteCond %{TIME_HOUR} <07
RewriteRule ^index\.html$ /e/i/index.html [L]
RewriteRule ^index\.html$ /e/index.html [L]
现在德语的时间条件工作正常,但似乎英语条件甚至没有传递给浏览器...... 有人可以给我一个提示,可能是什么问题? 非常感谢!
【问题讨论】:
-
确保浏览器不会在您希望显示英文网站时同时发布 both
de和en接受语言。在这种情况下,第一个(德国人)将获胜。此外,语言匹配对我来说有点奇怪 - 我会使用更清晰的符号,如下所示:RewriteCond %{HTTP:Accept-Language} ^.*de.*$ [NC] -
感谢您的回答和提示。由于检查用户位置然后为“英语”访问者设置适当的时间实在是太费力了,所以我将 htaccess 更改为固定重定向到白色背景。由于德国只有一个时区,而且英语传播得如此广泛——这个解决方案完全适合我。
标签: .htaccess mod-rewrite http-accept-language