重写子域名

时间:2010-10-09 19:03:04

标签: apache url mod-rewrite subdomain

显然这是一个非常简单的问题:如何重写

  

(值1).example.com的/(值2)

  

/(值1)/(值2)

我尝试了一些没有成功的事情。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

尝试此规则:

RewriteCond %{HTTP_HOST} ^([^/.]+)\.example\.com$
RewriteCond $1/%1 !^([^/]+)/\1$
RewriteRule ^/([^/]+)? /%1%{REQUEST_URI} [L]

一些解释:我之前的建议导致无限递归,因为L flag导致使用新URL重新启动重写过程:

  

但请记住,如果RewriteRule生成内部重定向(在每个目录上下文中重写时经常发生),这将重新注入请求并导致从第一个{重复开始重复处理} {1}}。

第二个条件将避免这种情况,因为它将子域部分与第一个路径段进行比较。只有它们不同,条件才成立并重写。