【问题标题】:htaccess subdomain rewritehtaccess 子域重写
【发布时间】:2011-03-23 14:47:57
【问题描述】:

这里有很多关于子域的话题,但没有人能帮助我......

我使用 htacces 将子域设置为文件夹

所以如果我们把http://en.example.com/something

我用这样的东西..

RewriteCond %{HTTP_HOST}  ^([^.]+)\.example\.com$ 
RewriteRule ^(.*)$        http://example.com/%1/$1 [NC]

这工作正常,但酒吧中的地址更改为http://example.com/en/something,但我想保留http://en.example.com/something

所以我尝试了这个

RewriteCond %{HTTP_HOST}  ^([^.]+)\.example\.com$ 
RewriteRule  ^([^.]+)\.example\.com(.*)   /$1/$2

或者只是

RewriteCond %{HTTP_HOST}  ^([^.]+)\.example\.com$ 
RewriteRule ^(.*)$        %1/$1 [NC]

但这不起作用。任何解决方案或想法?

一种解决方案是使用那里的语言(http://example.com/en/something),在那里我重写它,但如果我在子目录上工作,我会得到类似http://example.com/subdirectory/en/something 的东西 - 太糟糕了。 也许我喜欢http://example.com/en/subdirectory/something bud 如何进行此操作...

而且在某些私人服务器上,第一个案例将我发送到“也许”默认域,所以它对我不起作用。 (也许这是一些服务器条件或设置)

【问题讨论】:

    标签: .htaccess


    【解决方案1】:

    我知道这已经晚了一个月,但也许这对某人仍然有用。这里有几件事:

    关于你的第一个 RewriteRule:

    RewriteCond %{HTTP_HOST}  ^([^.]+)\.example\.com$ 
    RewriteRule ^(.*)$        http://example.com/%1/$1 [NC]
    

    您似乎已经发现,重写到另一个 URL 也会将用户的浏览器重定向到该新 URL,即使它位于您自己的域中。要使其隐藏,您必须重写服务器上的文件路径(就像您使用接下来的两条规则一样)。

    关于你的第二个 RewriteRule:

    RewriteCond %{HTTP_HOST}  ^([^.]+)\.example\.com$ 
    RewriteRule  ^([^.]+)\.example\.com(.*)   /$1/$2
    

    问题是你不能匹配RewriteRule中的域名,只能匹配URL路径。如果您的网址是 www.example.com/something/somethingelse,那么您尝试匹配的字符串就是 something/somethingelse。换句话说,它排除了 www.example.com/,因此您拥有的这个 RewriteRule 模式将永远不会匹配域名,因为该模式甚至没有针对 URL 的那部分进行测试,但是您在模式中包含域名,导致匹配失败。

    关于你的第三个 RewriteRule:

    RewriteCond %{HTTP_HOST}  ^([^.]+)\.example\.com$ 
    RewriteRule ^(.*)$        %1/$1 [NC]
    

    这看起来应该可以工作,所以如果不了解更多关于您的文件在服务器上的组织方式等信息,我无法确定为什么它不能工作。假设您在 /home/somebody/public_html/ 中拥有网站的所有文件。为了让 RewriteRule 像现在这样工作,您需要在 public_html 中有一个 en 子目录。因此,如果有人访问 en.example.com/something,RewriteRule 将导致 Apache 在 /home/somebody/public_html/en/something 处提供文件。我猜为什么它对您不起作用是您的子域可能指向 public_html 以外的其他地方(假设您实际上像我的示例中那样组织了网站文件)。请记住,您要重写的内容(在本例中为 /$1/$2)是服务器上的文件路径,而不是您网站的 URL。

    希望对您有所帮助!你现在可能已经解决了这个问题,但即使你已经解决了,我希望其他人仍然会觉得这很有用。

    【讨论】:

      猜你喜欢
      • 2011-05-15
      • 2011-02-04
      • 2014-03-17
      • 1970-01-01
      • 2010-12-29
      • 2011-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多