我尝试查看stackoverflow,但找不到答案。
所以我需要找出用户是哪个子域以及正在加载哪个页面。
例如:en.domain.com/contactus
这应该加载英语“联系我们”页面。
我所拥有的是:
RewriteCond %{HTTP_HOST} ^(www\.)?domain.com$ [NC]
RewriteRule ^(.*)$ index.php?lang=en&page=$1 [L,NC]
RewriteCond %{HTTP_HOST} ^en.domain.com$ [NC]
RewriteRule ^(.*)$ index.php?lang=en&page=$1 [L,NC]
RewriteCond %{HTTP_HOST} ^fr.domain.com$ [NC]
RewriteRule ^(.*)$ index.php?lang=fr&page=$1 [L,NC]
#etc...
但是由于某些原因,当我回显get for页面时,该值为:index.php,因此我无法读取该页面。
最佳答案
这是您应该使用的:
RewriteEngine On
RewriteBase /
SetEnvIf Host ^www\. lang=en
SetEnvIf Host ^en\. lang=en
SetEnvIf Host ^fr\. lang=fr
RewriteCond %{REQUEST_URI} !\.(css|png|gif|jpe?g|js)$ [NC]
RewriteRule ^([a-z0-9_\-]+)/?$ index.php?lang=%{ENV:lang}&page=$1 [L,NC,QSA]
将从
%{ENV:lang}
(从子域)读取SetEnvIf
,并设置您将从$_GET['lang'];
获取的正确语言(在您的PHP代码中-假设是PHP)这样,将动态加载任何子域,而无需一遍又一遍地为子域创建规则。我还添加了防止将图像或JavaScript作为页面加载的规则。