1

因为我是 .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]

现在德语的时间条件工作正常,但似乎英语条件甚至没有传递给浏览器......有人可以给我一个提示,可能是什么问题?非常感谢!

4

1 回答 1

0

我找到了一个对我有用的解决方案...

/var/spool/timing 中包含准备时间的文件:

RewriteCond %{TIME_HOUR}%{TIME_MIN} >0816

RewriteCond %{TIME_HOUR}%{TIME_MIN} <1603

RewriteCond %{TIME_HOUR}%{TIME_MIN} >0816

RewriteCond %{TIME_HOUR}%{TIME_MIN} <1604

RewriteCond %{TIME_HOUR}%{TIME_MIN} >0815

RewriteCond %{TIME_HOUR}%{TIME_MIN} <1605

RewriteCond %{TIME_HOUR}%{TIME_MIN} >0815

RewriteCond %{TIME_HOUR}%{TIME_MIN} <1606

...

...

...

...

以及其余部分的两个文件,也在 /var/spool/timing .begin

Options -Indexes +FollowSymLinks

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP:Accept-Language} ^.*en.*$ [NC]

RewriteRule ^index\.html$ /e/i/index.html  [L]

RewriteCond %{HTTP:Accept-Language} ^.*de.*$ [NC]

和 .end

RewriteRule ^index\.html$ /d/i/index.html  [L]

RewriteRule ^index\.html$ /d/index.html  [L]

RewriteCond %{HTTP:Accept-Language} ^.*en.*$ [NC]

RewriteCond %{TIME_HOUR} >17

RewriteCond %{TIME_HOUR} <06

RewriteRule ^index\.html$ /e/index.html  [L]

脚本每天都会采用前两行并将它们放入新行中。然后它将所有三个文件合并到新的 .htaccess 中。最后它再次清理文件。

#!/bin/sh

sed -n 1,2p /var/spool/timing/2014.txt >> /var/spool/timing/.mid

cat /var/spool/timing/.begin /var/spool/timing/.mid /var/spool/timing/.end > 
/var/www/.htaccess

sed -i '1,2d' /var/spool/timing/.mid & sed -i '1,2d' 
/var/spool/timing/2014.txt

这样最终每天都会有一个新的 .htaccess :

Options -Indexes +FollowSymLinks

RewriteEngine On

RewriteBase /

RewriteCond %{HTTP:Accept-Language} ^.*en.*$ [NC]

RewriteRule ^index\.html$ /e/i/index.html  [L]

RewriteCond %{HTTP:Accept-Language} ^.*de.*$ [NC]

RewriteCond %{TIME_HOUR}%{TIME_MIN} >0816

RewriteCond %{TIME_HOUR}%{TIME_MIN} <1603

RewriteRule ^index\.html$ /d/i/index.html  [L]

RewriteRule ^index\.html$ /d/index.html  [L]

RewriteCond %{HTTP:Accept-Language} ^.*en.*$ [NC]

RewriteCond %{TIME_HOUR} >17

RewriteCond %{TIME_HOUR} <06

RewriteRule ^index\.html$ /e/index.html  [L]

到目前为止效果很好,我只需要在今年年底设置一个新的 2015.txt - 如果那根本不需要的话......我想我会每年再次接受它。

于 2014-02-27T21:47:06.167 回答