首页 > 解决方案 > 使用 htaccess 和通配符 DNS 将 URL 重写为子域

问题描述

我想将我的网站 URL http://domain.tk/site/google.com更改 为 google.com.domain.tk 我试过了

RewriteEngine On
RewriteRule ^site/([^/]+)/?$ http://$1.domain.tk/ [NC,R=301,L]

它重定向到 google.com.domain.tk 并显示主页内容而不是http://domain.tk/site/google.com中的内容

我想要的例子可以在这个网站上找到

标签: .htaccessurl-rewriting

解决方案


我在对您的问题的评论中提到的文档清楚地说明并在示例中演示了重定向规则中的参数顺序是 1. 应用于传入请求的路径组件的匹配模式和 2. 请求的目标路径或 URL应该在内部被重写。您实施的规则与您所要求的相反:您实施了一个外部重定向到您想要重写主机名。

这个例子应该让你去:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^google\.com\.domain\.tk$
RewriteRule ^ /site/google.com%{REQUEST_URI} [QSA]

为此,必须将重写模块加载到 http 服务器中,显然,它必须为主机激活。您应该在您的 http 服务器内的实际主机配置中实施此类规则。如果您无权访问它(因此,如果您使用廉价的托管服务提供商),那么您可以使用分布式配置文件(通常名为“.htaccess”),但需要先在主机配置中启用它带有性能损失。


推荐阅读