如何使用子域名作为参数将子域名重定向到域名

如何使用子域名作为参数将子域名重定向到域名

我想使用子域名作为 URL 中的 GET 参数将我的通配符子域名重定向到我的主域名.htaccess

我希望发生的事情的示例:

billy.example.com

重定向至

www.example.com/profile?user_name=billy

这是我根据本网站上的其他答案整理出的当前规则:

RewriteCond %{HTTP_HOST} ^(.*).example.com
RewriteRule ^(.*)$ http://www.example.com/shop?user_name=%1 [R,L]

然而,当发生重定向时,我收到以下带有“重定向循环”错误的 URL:

www.example.com/profile?user_name=www

我在该网站上看到过几种不同的解答方法,但不幸的是,它们都不适用于我。

(我正在使用 PHP,并且已*在我的托管面板中将其设置为子域名。)

答案1

发生重定向循环是因为您正在重定向所有内容(甚至是 www.example.com)。也许可以尝试以下方法:

RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteCond %{HTTP_HOST} ^([^\.]+)\.example\.com$ [NC]
RewriteRule ^/(.*)$ http://www.example.com/shop?user=%1 [L,R=301]

这应该只在你正在做其他事情时触发www.example.com

答案2

在尝试使用 .htaccess 解决这个问题并失败后,我最终使用 PHP 来帮我解析 URL。对于那些希望看到我做了什么的人:

$host = $_SERVER['HTTP_HOST'];
$subdomain = str_replace('.example.com', '', $host);
如果($subdomain != 'www')
    header("位置:http://www.example.com/shop?user_name=".$subdomain);

相关内容