这是我目前的代码:
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文件夹。
编辑:为了澄清,我正在尝试进行内部重定向,而不是外部重定向。
编辑:似乎没有内部重定向的标志。是否有任何地方我可以看到破碎的重写的实际错误消息?如果我知道出了什么问题,我将有更好的机会解决它。
答案 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(代理)标志,但它确实有效。