带子域的htaccess掩码网址

时间:2013-12-06 13:06:48

标签: redirect masking subdomain

我想用子域掩盖url路径。 例: 'auto.domain.com'应重定向到'domain.com/auto'

然后如果按下菜单,子域名应该保留 例: 'auto.domain.com/busses'而不是去'domain.com/auto/busses'

我使用以下方法管理了重定向:

RewriteCond %{HTTP_HOST} !www\. [NC]
RewriteCond %{HTTP_HOST} ^([^\.]+)\.domain\.com  [NC]
RewriteRule .*  http://domain.com/%1     [L,R=302]

但这只是重定向而不是掩蔽。

domain.com和subdomain.com都指向相同的DOCUMENT_ROOT。 当您在没有重写的情况下前往其中一个或另一个域时,域或子域仍保留在链接中。 问题是子域不应该转到domain.com而是domain.com/auto。 (auto不是文件夹,它是来自cms的别名)

3 个答案:

答案 0 :(得分:1)

也许:

RewriteEngine on

RewriteCond %{REMOTE_HOST} ^subdomain.* [NC]
RewriteRule ^(.*)$ ^subdomain/ [L]

替换"子域名"在您的子域

答案 1 :(得分:0)

好的尝试这些规则:

RewriteEngine on

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_HOST} ^((?!www)[^.]+)\.
RewriteRule ^ /%1%{REQUEST_URI} [L,NC]

确保这是您的第一条规则。

答案 2 :(得分:0)

由于htaccess不是我的强项,我做了一个php头重定向:

$domain = $_SERVER["SERVER_NAME"];
$requri = $_SERVER['REQUEST_URI'];

if (($domain == "subdomain.domain.com") && $requri == "/" ||
($domain == "www.subdomain.domain.com")) { 
header("Status: 301 Moved Permanently");
header("Location: http://domain.com/subdomain"); 
}

此解决方案的工作方式与预期相似,但某些文件提交问题需要对子域进行一些额外的调整。