我有一个我手动翻译的网站。普通版本为英文,翻译版本为西班牙文。
翻译版本可通过http://example.com/file.php?language=es访问(es esolol) 我希望域名后的网址不会因翻译的变化而改变,所以我尝试使用http://es.example.com/代替。
这是我的htaccess的当前状态:
RewriteCond %{HTTP_HOST} !^example\.site$
RewriteRule home/$ /index.php [L,QSA]
RewriteRule contact-us/$ /contact-us.php [L,QSA]
RewriteRule our-location/$ /our-location.php [L,QSA]
RewriteRule gallery/$ /gallery.php [L,QSA]
RewriteRule (.*)/$ /user.php?display_name=$1 [L,QSA]
RewriteCond %{HTTP_HOST} !^es\.example\.site$
RewriteRule home/$ /index.php?language=es [L,QSA]
RewriteRule contact-us/$ /contact-us.php?language=es [L,QSA]
RewriteRule our-location/$ /our-location.php?language=es [L,QSA]
RewriteRule gallery/$ /gallery.php?language=es [L,QSA]
RewriteRule (.*)/$ /user.php?language=es&display_name=$1 [L,QSA]
!^ example.site $ all下的第一组规则覆盖了!^ es.example.site $下的规则,所以当我访问带有或不带“es”子域的页面时,我得到了英文版无论哪种方式。如果我将子域规则(和重写条件)置于非子域规则之上,则会发生同样的事情,除非该站点仅以西班牙语翻译。
非常感谢任何帮助。
编辑:
固定规则,感谢@ hjpotter92
的帮助RewriteRule ^home/?$ /index.php [NC,QSA,S=3]
RewriteRule ^(contact-us|our-location|gallery)/?$ /$1.php [NC,QSA,S=2]
RewriteRule ^(?!user\.php).*/$ /user.php?display_name=$0 [NC,QSA]
RewriteCond %{HTTP_HOST} ^es\.example\.site$ [NC]
RewriteCond %{QUERY_STRING} !language=es [NC]
RewriteRule ^.*$ /$0?language=es [L,QSA]
答案 0 :(得分:1)
您可能正在努力实现这一目标:
RewriteEngine On
RewriteRule ^home/?$ /index.php [NC,QSA,S=3]
RewriteRule ^(contact-us|our-location|gallery)/?$ /$1.php [NC,QSA,S=2]
RewriteRule ^(?!user\.php).*/$ /user.php?display_name=$0 [NC,QSA]
RewriteCond %{HTTP_HOST} ^es\.example\.com$ [NC]
RewriteCond %{QUERY_STRING} !language=es [NC]
RewriteRule ^.*$ /$0?language=es [L,QSA]