【发布时间】:2015-11-15 13:31:31
【问题描述】:
我有一个需要手动翻译的网站。普通版是英文,翻译版是西班牙文。
可通过http://example.com/file.php?language=es 访问翻译版本(es 为espanol) 我希望域之后的 URL 不会因翻译更改而改变,所以我尝试改用 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$ 下的第一组规则都覆盖了 !^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]
【问题讨论】:
标签: apache .htaccess mod-rewrite url-rewriting subdomain