使用htaccess对单个URL进行多次重写

时间:2015-01-23 11:10:54

标签: php apache .htaccess mod-rewrite url-rewriting

我有一个多博客网站,其中有多个域名。 问题是我需要一个以下语法的重写规则

XXX.domain.com/{any other things} to www.domain.com/domain/XXX/{any other things}

我也为下面的一个编写了一套规则

^domain/([a-zA-Z0-9]+)/cat/([a-zA-Z0-9]+)$ index.php?domain=$1&cat=$2

所以事情是我需要构建一个将域转换为路径的规则,然后再用这个处理其他事情。

3 个答案:

答案 0 :(得分:1)

RewriteRule ^([a-zA-Z0-9\-_]+).domain.com/(.*)$ www.domain.com/$1/$2

([a-zA-Z0-9\-_]+) 匹配子域 (.*) 匹配所有内容。

这会将whatever.domain.com/anything重写为www.domain.com/whatever/anything

答案 1 :(得分:1)

在你的其他规则之前,你需要

RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^([^.]+)\.
RewriteCond $1 !^domain/
RewriteRule ^(.*)$ /domain/%1/$1 [L]

答案 2 :(得分:0)

我希望我理解正确,您的重定向示例与要求无关:

RewriteRule ^([^.]+)\.domain\.com/(.*)$  www.domain.com/domain/$1/$2

[^。] +捕获子域名,剩下的就是selfevident,我希望。