【发布时间】:2011-04-23 06:50:28
【问题描述】:
显然是一个非常简单的问题:我该如何重写
(value1).example.com/(value2)
到
/(value1)/(value2)
我已经尝试了几件事但没有成功。
提前谢谢你。
【问题讨论】:
标签: apache url mod-rewrite subdomain
显然是一个非常简单的问题:我该如何重写
(value1).example.com/(value2)
到
/(value1)/(value2)
我已经尝试了几件事但没有成功。
提前谢谢你。
【问题讨论】:
标签: apache url mod-rewrite subdomain
试试这个规则:
RewriteCond %{HTTP_HOST} ^([^/.]+)\.example\.com$
RewriteCond $1/%1 !^([^/]+)/\1$
RewriteRule ^/([^/]+)? /%1%{REQUEST_URI} [L]
一些解释:我之前的建议导致了无限递归,因为L flag 导致使用新 URL 重新启动重写过程:
但是请记住,如果
RewriteRule生成内部重定向(在每个目录上下文中重写时经常发生),这将重新注入请求并导致从第一个RewriteRule开始重复处理.
第二个条件将避免这种情况,因为它将子域部分与第一个路径段进行比较。只有当它们不同时,条件才成立并进行重写。
【讨论】: