【问题标题】:.htaccess page and lang error.htaccess 页面和语言错误
【发布时间】:2012-01-27 00:56:46
【问题描述】:

我尝试查看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...

但由于某种原因,当我回显页面获取时,该值为:index.php,因此我无法读取该页面。

【问题讨论】:

    标签: apache .htaccess mod-rewrite


    【解决方案1】:

    这是你应该使用的:

    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 作为页面加载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-18
      • 2016-02-05
      • 2012-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 2016-08-20
      相关资源
      最近更新 更多