繁体   English   中英

.htaccess重写与Cookie删除不一致

[英].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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM