[英].htaccess rewrite not consistent with cookie drop
我的.htaccess文件中包含以下代码:
RewriteRule ^(en|af|fr)/(.*)$ - [co=lang:$1:mysite.info:7200:/] #drop/update cookie with lang
RewriteRule ^(en|af|fr)$ - [co=lang:$1:mysite.info:7200:/] #drop/update cookie with lang
RewriteRule ^(en|af|fr)$ / [R,NC]
RewriteRule ^(en|af|fr)/(.*)$ /$2 [R,NC]
在我的PHP中,我可以选择以下语言:
<?php echo $_COOKIE['lang']; ?>
<ul>
<li><a href="/en<? echo $_SERVER['REQUEST_URI'];?>">en-ZA</a></li>
<li><a href="/fr<? echo $_SERVER['REQUEST_URI'];?>">fr-MU</a></li>
<li><a href="/af<? echo $_SERVER['REQUEST_URI'];?>">af-ZA</a></li>
</ul>
这是行之有效的,但并不一致。 当我在各种语言之间切换时,它只是停止工作,如果我继续单击其他语言,则会再次开始。
问题的第二部分:
如何减少这些行:
RewriteCond %{http_host} ^www.mysite.info [nc] #if url starts with www.mysite.info
RewriteRule ^(.*)$ http://mysite.info/$1 [r,nc] #rewrite without the www
RewriteCond %{http_host} ^www.(.*).mysite.info [nc] #if url starts with www.(aff).mysite.info
RewriteRule ^(.*)$ http://%1.mysite.info/$1 [r,nc] #rewrite without the www
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{http_host} ^(.*)\.mysite.info [nc] #if subdomain is aff
RewriteRule ^(.*)$ - [co=aff:%1:mysite.info:7200:/] #drop/update cookie with aff
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{http_host} ^(.*)\.mysite.info [nc] #if subdomain is aff
RewriteRule ^(.*)$ http://mysite.info/$1 [nc,R] #rewrite without subdomain
感谢帮助,阿努巴瓦!
不确定您是否在其中重复了规则。 尝试使用此规则替换所有4条规则:
RewriteRule ^(en|af|fr)(/.*)?$ /$2 [co=lang:$1:mysite.info:7200:/,NC,L,R]
更新:
RewriteCond %{http_host} ^([^.]+)\.mysite\.info$ [NC]
RewriteRule ^(.*)$ http://mysite.info/$1 [L,R]
RewriteCond %{http_host} ^www.([^.]+)\.mysite\.info$ [NC]
RewriteRule ^(.*)$ http://%1.mysite.info/$1 [L,R,NC]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{http_host} ^([^.]+)\.mysite.info [NC]
RewriteRule ^(.*)$ - [co=aff:%1:mysite.info:7200:/]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.