我想用子域掩盖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的别名)
答案 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");
}
此解决方案的工作方式与预期相似,但某些文件提交问题需要对子域进行一些额外的调整。