.htaccess 如何将URL从some-sub-domain.some-domain.com重写为some-domain.com/some-sub-domain

.htaccess 如何将URL从some-sub-domain.some-domain.com重写为some-domain.com/some-sub-domain,.htaccess,mod-rewrite,url-rewriting,.htaccess,Mod Rewrite,Url Rewriting,我想重写我的URL,这样我就可以访问客户端视为子域的文件夹。客户端将在URL栏中放置以下内容: abc.def.com 通过URL重写,它将转到 def.com/abc 默默地。请告诉我怎么做?如果您已经知道子域,您可以: RewriteCond %{REMOTE_HOST} ^(?:www\.)?subdomain\.your_domain\.com [NC] RewriteRule ^(.*) /subdomain/$1 [L] 如果您希望支持任何可能的子域,请使用: RewriteC

我想重写我的URL,这样我就可以访问客户端视为子域的文件夹。客户端将在URL栏中放置以下内容:

abc.def.com
通过URL重写,它将转到

def.com/abc

默默地。请告诉我怎么做?

如果您已经知道子域,您可以:

RewriteCond %{REMOTE_HOST} ^(?:www\.)?subdomain\.your_domain\.com [NC]
RewriteRule ^(.*) /subdomain/$1 [L]
如果您希望支持任何可能的子域,请使用:

RewriteCond %{REMOTE_HOST} ^(?:www\.)?([^\.]+)\.your_domain\.com [NC]
RewriteRule ^(.*) /%1/$1 [L]

如果您已经知道子域,您可以:

RewriteCond %{REMOTE_HOST} ^(?:www\.)?subdomain\.your_domain\.com [NC]
RewriteRule ^(.*) /subdomain/$1 [L]
如果您希望支持任何可能的子域,请使用:

RewriteCond %{REMOTE_HOST} ^(?:www\.)?([^\.]+)\.your_domain\.com [NC]
RewriteRule ^(.*) /%1/$1 [L]

您应该使用
%{HTTP\u HOST}
而不是
%{REMOTE\u HOST}
。这是因为
%{REMOTE\u HOST}
是在
%{REMOTE\u ADDR}
上反向DNS查找的结果,如果启用了
主机名查找

所以你的规则应该是

RewriteCond %{HTTP_HOST} ^(?:www\.)?([^\.]+)\.your_domain\.com [NC]
RewriteRule ^(.*) /%1/$1 [L]

您应该使用
%{HTTP\u HOST}
而不是
%{REMOTE\u HOST}
。这是因为
%{REMOTE\u HOST}
是在
%{REMOTE\u ADDR}
上反向DNS查找的结果,如果启用了
主机名查找

所以你的规则应该是

RewriteCond %{HTTP_HOST} ^(?:www\.)?([^\.]+)\.your_domain\.com [NC]
RewriteRule ^(.*) /%1/$1 [L]

您的重写规则中只有很少的更改才能很好地工作

 RewriteCond %{HTTP_HOST} ^(?:www\.)?([^\.]+)\.your_domain\.com [NC]
 RewriteRule ^(.*)$ /%1/$1 [L]

您应该在重写规则中使用$。希望这对您有所帮助。

您的重写规则中只有很少的更改才能很好地工作

 RewriteCond %{HTTP_HOST} ^(?:www\.)?([^\.]+)\.your_domain\.com [NC]
 RewriteRule ^(.*)$ /%1/$1 [L]

您应该在重写规则中使用$。希望这对您有所帮助。

很抱歉这么说,但对我不起作用。供您参考,当我使用子域时,它不在任何地方。浏览器显示找不到该服务器。然后您需要将子域添加到DNS。以上假设子域是可访问的,并指向运行mod_rewrite的web服务器。mod_rewrite在我的web服务器中处于启用状态。如果我使用通配符(*)子域,则还没有结果。我该怎么办?如果没有关于您的设置的进一步信息,恐怕我帮不上忙。您的Web服务器的域和您要服务的子域是什么?很抱歉,但不适用于我。供您参考,当我使用子域时,它不在任何地方。浏览器显示找不到该服务器。然后您需要将子域添加到DNS。以上假设子域是可访问的,并指向运行mod_rewrite的web服务器。mod_rewrite在我的web服务器中处于启用状态。如果我使用通配符(*)子域,则还没有结果。我该怎么办?如果没有关于您的设置的进一步信息,恐怕我帮不上忙。您的Web服务器的域和要服务的子域是什么?