.htaccess重写子域名

时间:2010-04-05 16:32:44

标签: .htaccess mod-rewrite subdomain

这是我目前的代码:

RewriteCond %{HTTP_HOST} !^example\.com [NC] 
#RewriteCond %{REQUEST_URI}!^something
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com 
RewriteRule (.*) something/%1/$1 [QSA,L]

我的目标是将http://*.example.com/whatever重写为http://example.com/something/*/whatever,假设*两者相同,whatever两者相同。但是,我相信这会以某种方式导致无限循环,所以我添加了注释掉的行(RewriteBase是/ btw),但是如果我取消注释那么整个站点就是500响应代码。没有该行,只有子域名出错。

我做错了什么,我该如何解决这个问题?我已经配置了服务器,所以任何东西都被重定向到我的public_html文件夹。

编辑:为了澄清,我正在尝试进行内部重定向,而不是外部重定向。

编辑:似乎没有内部重定向的标志。是否有任何地方我可以看到破碎的重写的实际错误消息?如果我知道出了什么问题,我将有更好的机会解决它。

2 个答案:

答案 0 :(得分:2)

我没有看到规则重写域名;也许这是你的问题。使用您的代码,尝试:

RewriteCond %{HTTP_HOST} !^example\.com [NC] 
#RewriteCond %{REQUEST_URI}!^something
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com 
RewriteRule (.*) http://example.com/something/%1/$1 [QSA,L]

我希望这会对你有所帮助 杰罗姆·瓦格纳

答案 1 :(得分:0)

我在规则中添加了P(代理)标志,但它确实有效。