htaccess - 子域作为 GET 参数

Posted

技术标签:

【中文标题】htaccess - 子域作为 GET 参数【英文标题】:htaccess - subdomain as GET parameter 【发布时间】:2012-03-22 00:53:03 【问题描述】:

我的.htaccess 文件中已有以下内容:

RewriteEngine on

RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]

但我想添加这样的规则:

RewriteCond %HTTP_HOST ^(.+).example.com
RewriteRule ^(.*)% http://example.com/?name=%1&type=$1 [R,L]

但如果没有它绑定到example.com,它必须在任何域上工作。

【问题讨论】:

【参考方案1】:
RewriteEngine on
RewriteCond %HTTP_HOST !^(www)\. [NC]
RewriteCond %HTTP_HOST ^(.*)\.(.*)\.com [NC]
RewriteRule (.*) http://www.%2.com/?name=%1 [R=301,L]

http://subdomain.domain.com 重写为http://www.domain.com/?name=subdomain

将两者结合起来尝试这样的事情

RewriteEngine on
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %HTTP_HOST !^(www)\. [NC]
RewriteCond %HTTP_HOST ^(.*)\.(.*)\.com [NC]
RewriteRule (.*) http://www.%2.com/index.php?route=$1&name=%1 [R=301,L]

这会将http://subdomain.domain.com/hello-world 重定向到http://www.domain.com/index.php?route=hello-world&name=subdomain

【讨论】:

但是如何结合这两个规则,例如这个例子:subd.domain.com/folder1/folder2 = domain.com/index.php?domain=subd&route=folder1/folder2 - 浏览器中的 URL 不应该变成 domain.com/index.php?route=hello-world&name=subdomain ,它必须保持 subdomain.domain.com/hello-world - 我不需要 www 前缀 来吧,删除www. 部分然后你应该能够自己弄清楚我们自己 @user1247574,在这种情况下,您需要执行 Internal Redirect -> 只需删除 R=301 标志。 (但请记住,起初这似乎不起作用,因为您的浏览器会缓存这些 301) 这个放在哪里?谁能给我详细的步骤,我们是否也必须从 cpanel 添加子域?

以上是关于htaccess - 子域作为 GET 参数的主要内容,如果未能解决你的问题,请参考以下文章

使用 htaccess 将所有流量从根重定向到特定的子域页面

htaccess 删除参数和索引文件

.htaccess 问题、虚拟子域和 Codeigniter

在 AWS lightail LAMP 中向 htaccess 文件添加子域

htaccess通配符子域重定向与https非www

htaccess mod 用斜杠将 $_GET 重写为变量