Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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
.htaccess将多个重写条件与多个重写规则相结合_.htaccess_Mod Rewrite_Http Accept Language - Fatal编程技术网

.htaccess将多个重写条件与多个重写规则相结合

.htaccess将多个重写条件与多个重写规则相结合,.htaccess,mod-rewrite,http-accept-language,.htaccess,Mod Rewrite,Http Accept Language,由于我是.htaccess的新手,我想不出如何实现这一点: 在我的Web服务器上,默认的index.html(/var/www/)应该被重定向到与一天中的时间和浏览器语言有关的其他index.html /index.html(默认、德语、夜间黑色背景) /i/index.html(德语,当天的白色背景) /e/index.html(英文,夜间黑色背景) /e/i/index.html(英文,当天白色背景) 所有页面都相互链接,因此用户可以在语言和“样式”之间切换。 仅使用德语的时间条件,但如

由于我是.htaccess的新手,我想不出如何实现这一点: 在我的Web服务器上,默认的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]
Options+FollowSymLinks
重新启动发动机
重写基/
重写cond%{TIME\u HOUR}>07
重写秒%{TIME_HOUR}07
重写秒%{TIME_HOUR}16
重写秒%{TIME_HOUR}16
重写秒%{TIME_HOUR}07
重写秒%{TIME_HOUR}16

RewriteCond%{TIME\u HOUR}我找到了一个适合我的解决方案

在/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

...

...

...

...

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:

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]
选项-索引+FollowSymLinks
重新启动发动机
重写基/
RewriteCond%{HTTP:Accept Language}^.*en.*$[NC]
重写规则^index\.html$/e/i/index.html[L]
RewriteCond%{HTTP:Accept Language}^.*de.*$[NC]
重写条件%{TIME\u HOUR}%{TIME\u MIN}>0816
重写秒%{TIME\u HOUR}%{TIME\u MIN}17

RewriteCond%{TIME_HOUR}确保浏览器在显示英文站点时不会同时发布
de
en
接受语言。在这种情况下,第一个(德国人)将获胜。另外,语言匹配对我来说有点奇怪-我会使用更干净的表示法,比如:
RewriteCond%{HTTP:Accept language}^.*de.*$[NC]
谢谢你的回答和提示。由于检查用户位置,然后为“英语”访问者设置适当的时间太费劲了,我将htaccess改为固定重定向到白色背景。由于德国只有一个时区,英语的传播非常广泛,所以这个解决方案完全适合我。
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]
#!/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
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]